Explorar o código

绍兴设备管理角色控制

zhonghuizhen hai 7 meses
pai
achega
415e02db36
Modificáronse 1 ficheiros con 2280 adicións e 2261 borrados
  1. 2280 2261
      src/views/component/device/indexV2.vue

+ 2280 - 2261
src/views/component/device/indexV2.vue

@@ -1,2404 +1,2423 @@
 <template>
-    <div class="main-container">
-      <ibps-container class="page">
-        <template>
-          <ibps-crud
-            key="istree"
-            ref="crud"
-            :data="listData"
-            :toolbars="
-              config
-                ? listConfig.toolbars.filter((obj) => {
-                    return obj.key !== 'customSetting'
-                  })
-                : listConfig.toolbars
-            "
-            :search-form="listConfig.searchForm"
-            :pk-key="pkKey"
-            :columns="listConfig.columns"
-            :loading="loading"
-            :pagination="pagination"
-            :display-field="tableTitle"
-            :index-row="false"
-            @sort-change="handleSortChange"
-            @action-event="handleAction"
-            @pagination-change="handlePaginationChange"
-          >
-            <template slot="posSlot" slot-scope="{ row }">
-              <ibps-user-selector
-                v-model="row.bianZhiBuMen"
-                type="position"
-                readonly-text="text"
-                :multiple="false"
-                :disabled="true"
-              />
-            </template>
-            <template slot="userSlot" slot-scope="{ row }">
-              <ibps-user-selector
-                v-model="row.guanLiRen"
-                type="user"
-                readonly-text="text"
-                :multiple="true"
-                :disabled="true"
-              />
-            </template>
-            <template slot="heChaRenSlot" slot-scope="{ row }">
-              <ibps-user-selector
-                v-model="row.biXuDeHuanJin"
-                type="user"
-                readonly-text="text"
-                :multiple="true"
-                :disabled="true"
-              />
-            </template>
-  
-            <template slot="deviceSlot" slot-scope="{ row }">
-              <ibps-custom-dialog
-                v-model="row.weiHuFangShi"
-                size="mini"
-                :template-key="config ? 'gwzzdhkrcwh' : 'sbbqdhk'"
-                multiple
-                :disabled="true"
-                type="dialog"
-                class="custom-dialog"
-                placeholder="请选择"
-                icon="el-icon-search"
-              />
-            </template>
-  
-            <template slot="deviceStateSlot" slot-scope="{ row }">
-              <span>{{
-                stateList[row.sheBeiZhuangTa] || row.sheBeiZhuangTa || ''
-              }}</span>
-            </template>
-            <template slot="deviceTypeSlot" slot-scope="{ row }">
-              <span>{{
-                typeList[row.sheBeiLeiXing] || row.sheBeiLeiXing || ''
-              }}</span>
-            </template>
-  
-            <template slot="placeSlot" slot-scope="{ row }">
-              <ibps-custom-dialog
-                v-model="row.cunFangWeiZhi"
-                size="mini"
-                template-key="fjxzkdd"
-                multiple
-                :disabled="true"
-                type="dialog"
-                class="custom-dialog"
-                placeholder="请选择"
-                icon="el-icon-search"
-              />
-            </template>
-  
-            <template slot="customButton" slot-scope="{ row }">
-              <el-button
-                type="text"
-                :icon="hasRole ? 'el-icon-edit-outline' : 'ibps-icon-eye'"
-                @click="goEdit(row)"
-                >{{ hasRole ? '修改' : '查阅' }}</el-button
-              >
-              <!-- <el-button type="text" icon="el-icon-view" @click="goLook(row)">查阅</el-button> -->
-              <el-button
-                type="text"
-                icon="ibps-icon-table"
-                @click="goLookForm(row)"
-                >表单</el-button
-              >
-            </template>
-            <template slot="expandSlot" slot-scope="{ row }">
-              <el-row
-                :gutter="20"
-                style="height: 145px; padding: 0 20px 0 0"
-                type="flex"
-                align="middle"
-              >
-                <el-col :span="5" :push="2">
-                  <el-row>
-                    <el-col :span="3">
-                      <el-image
-                        class="icon-image"
-                        :src="images[0]"
-                        fit="contain"
-                      />
-                    </el-col>
-                    <el-col :span="21">
-                      <div class="title">验收信息</div>
-                      <div class="ctx">
-                        <div class="item">
-                          接收日期:{{ row.jieShouRiQi || '/' }}
-                        </div>
-                        <div class="item">
-                          验收日期:{{ row.yanShouRiQi || '/' }}
-                        </div>
-                        <div class="item">
-                          核查日期:{{ row.biXuSheShi || '/' }}
-                        </div>
+  <div class="main-container">
+    <ibps-container class="page">
+      <template>
+        <ibps-crud
+          key="istree"
+          ref="crud"
+          :data="listData"
+          :toolbars="
+            readOnly
+              ? listConfig.toolbars.filter((obj) => {
+                  return obj.key == 'search'
+                })
+              : config
+              ? listConfig.toolbars.filter((obj) => {
+                  return obj.key !== 'customSetting'
+                })
+              : listConfig.toolbars
+          "
+          :search-form="listConfig.searchForm"
+          :pk-key="pkKey"
+          :columns="listConfig.columns"
+          :loading="loading"
+          :pagination="pagination"
+          :display-field="tableTitle"
+          :index-row="false"
+          @sort-change="handleSortChange"
+          @action-event="handleAction"
+          @pagination-change="handlePaginationChange"
+        >
+          <template slot="posSlot" slot-scope="{ row }">
+            <ibps-user-selector
+              v-model="row.bianZhiBuMen"
+              type="position"
+              readonly-text="text"
+              :multiple="false"
+              :disabled="true"
+            />
+          </template>
+          <template slot="userSlot" slot-scope="{ row }">
+            <ibps-user-selector
+              v-model="row.guanLiRen"
+              type="user"
+              readonly-text="text"
+              :multiple="true"
+              :disabled="true"
+            />
+          </template>
+
+          <template slot="deviceSlot" slot-scope="{ row }">
+            <ibps-custom-dialog
+              v-model="row.weiHuFangShi"
+              size="mini"
+              :template-key="config ? 'gwzzdhkrcwh' : 'sbbqdhk'"
+              multiple
+              :disabled="true"
+              type="dialog"
+              class="custom-dialog"
+              placeholder="请选择"
+              icon="el-icon-search"
+            />
+          </template>
+
+          <template slot="deviceStateSlot" slot-scope="{ row }">
+            <span>{{
+              stateList[row.sheBeiZhuangTa] || row.sheBeiZhuangTa || ''
+            }}</span>
+          </template>
+          <template slot="deviceTypeSlot" slot-scope="{ row }">
+            <span>{{
+              typeList[row.sheBeiLeiXing] || row.sheBeiLeiXing || ''
+            }}</span>
+          </template>
+
+          <template slot="placeSlot" slot-scope="{ row }">
+            <ibps-custom-dialog
+              v-model="row.cunFangWeiZhi"
+              size="mini"
+              template-key="fjxzkdd"
+              multiple
+              :disabled="true"
+              type="dialog"
+              class="custom-dialog"
+              placeholder="请选择"
+              icon="el-icon-search"
+            />
+          </template>
+
+          <template slot="customButton" slot-scope="{ row }">
+            <el-button
+              type="text"
+              :icon="
+                hasRole && !readOnly ? 'el-icon-edit-outline' : 'ibps-icon-eye'
+              "
+              @click="goEdit(row)"
+              >{{ hasRole && !readOnly ? '修改' : '查阅' }}</el-button
+            >
+            <!-- <el-button type="text" icon="el-icon-view" @click="goLook(row)">查阅</el-button> -->
+            <el-button
+              type="text"
+              icon="ibps-icon-table"
+              @click="goLookForm(row)"
+              >表单</el-button
+            >
+          </template>
+          <template slot="expandSlot" slot-scope="{ row }">
+            <el-row
+              :gutter="20"
+              style="height: 145px; padding: 0 20px 0 0"
+              type="flex"
+              align="middle"
+            >
+              <el-col :span="5" :push="2">
+                <el-row>
+                  <el-col :span="3">
+                    <el-image
+                      class="icon-image"
+                      :src="images[0]"
+                      fit="contain"
+                    />
+                  </el-col>
+                  <el-col :span="21">
+                    <div class="title">验收信息</div>
+                    <div class="ctx">
+                      <div class="item">
+                        接收日期:{{ row.jieShouRiQi || '/' }}
                       </div>
-                    </el-col>
-                  </el-row>
-                </el-col>
-                <el-col :span="5" :push="2">
-                  <el-row>
-                    <el-col :span="3">
-                      <el-image
-                        class="icon-image"
-                        :src="images[1]"
-                        fit="contain"
-                      />
-                    </el-col>
-                    <el-col :span="21">
-                      <div class="title">建档信息</div>
-                      <div class="ctx">
-                        <div class="item">
-                          <div class="cusitem">
-                            <span class="span">建档人:</span>
-                            <ibps-user-selector
-                              :value="row.bianZhiRen"
-                              type="user"
-                              readonly-text="text"
-                              :multiple="true"
-                              :disabled="true"
-                              size="mini"
-                              style="width: 100px"
-                            />
-                          </div>
-                        </div>
-                        <div class="item">
-                          <div class="cusitem">
-                            <span class="span">建档部门:</span>
-                            <ibps-user-selector
-                              :value="row.bianZhiBuMen"
-                              type="position"
-                              readonly-text="text"
-                              :disabled="true"
-                              :multiple="false"
-                              size="mini"
-                              style="width: 100px"
-                            />
-                          </div>
-                        </div>
-                        <div class="item">
-                          建档时间:{{ row.bianZhiShiJian || '/' }}
-                        </div>
+                      <div class="item">
+                        验收日期:{{ row.yanShouRiQi || '/' }}
                       </div>
-                    </el-col>
-                  </el-row>
-                </el-col>
-                <el-col :span="5" :push="2">
-                  <el-row>
-                    <el-col :span="3">
-                      <el-image
-                        class="icon-image"
-                        :src="images[2]"
-                        fit="contain"
-                      />
-                    </el-col>
-                    <el-col :span="21">
-                      <div class="title">维护信息</div>
-                      <div class="ctx">
-                        <div class="item">
-                          是否维护:{{ row.shiFouWeiHu || '/' }}
-                        </div>
-                        <div class="item">
-                          是否24H开机:{{ row.jianKongYiJu || '/' }}
-                        </div>
-                        <div class="item">
-                          是否限用:{{ row.xiaoZhunWuCha || '/' }}
-                        </div>
+                      <div class="item">
+                        核查日期:{{ row.biXuSheShi || '/' }}
                       </div>
-                    </el-col>
-                  </el-row>
-                </el-col>
-                <el-col :span="5" :push="2">
-                  <el-row>
-                    <el-col :span="3">
-                      <el-image
-                        class="icon-image"
-                        :src="images[3]"
-                        fit="contain"
-                      />
-                    </el-col>
-                    <el-col :span="21">
-                      <div class="title">校准信息</div>
-                      <div class="ctx">
-                        <div class="item">
-                          是否校准:{{ row.shiFouXiaoZhun || '/' }}
-                        </div>
-                        <div class="item">
-                          校准周期:{{
-                            row.xiaoZhunZQ ? `${row.xiaoZhunZQ}月` : '/'
-                          }}
-                        </div>
-                        <div class="item">
-                          最近校准时间:{{ row.yiXiaoRiQi || '/' }}
-                        </div>
-                        <div class="item">
-                          校准有效期至:{{ row.xiaoZhunYouXia || '/' }}
+                    </div>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="5" :push="2">
+                <el-row>
+                  <el-col :span="3">
+                    <el-image
+                      class="icon-image"
+                      :src="images[1]"
+                      fit="contain"
+                    />
+                  </el-col>
+                  <el-col :span="21">
+                    <div class="title">建档信息</div>
+                    <div class="ctx">
+                      <div class="item">
+                        <div class="cusitem">
+                          <span class="span">建档人:</span>
+                          <ibps-user-selector
+                            :value="row.bianZhiRen"
+                            type="user"
+                            readonly-text="text"
+                            :multiple="true"
+                            :disabled="true"
+                            size="mini"
+                            style="width: 100px"
+                          />
                         </div>
                       </div>
-                    </el-col>
-                  </el-row>
-                </el-col>
-                <el-col :span="4" :push="1">
-                  <el-row>
-                    <el-col :span="24">
-                      <el-image
-                        class="device-image"
-                        :src="ImageUrl(row)"
-                        fit="fill"
-                        :preview-src-list="ImageAllUrl(row)"
-                        :title="`[${row.sheBeiMingCheng}]设备首图,点击查看更多`"
-                      >
-                        <div slot="error" class="image-slot">
-                          <el-empty
-                            class="device-image"
-                            description="暂无图片"
-                            :image-size="70"
+                      <div class="item">
+                        <div class="cusitem">
+                          <span class="span">建档部门:</span>
+                          <ibps-user-selector
+                            :value="row.bianZhiBuMen"
+                            type="position"
+                            readonly-text="text"
+                            :disabled="true"
+                            :multiple="false"
+                            size="mini"
+                            style="width: 100px"
                           />
                         </div>
-                      </el-image>
-                    </el-col>
-                  </el-row>
-                </el-col>
-              </el-row>
-            </template>
-            <!-- 搜索条件 -->
-            <template slot="pos">
-              <ibps-user-selector
-                v-model="search.pos"
-                type="position"
-                readonly-text="text"
-                :multiple="true"
-                size="mini"
-                :filter="filter"
-                filtrate
-              />
-            </template>
-            <template slot="time">
-              <el-date-picker
-                v-model="search.time"
-                size="mini"
-                type="daterange"
-                :picker-options="pickerOptions"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                align="right"
-                value-format="yyyy-MM-dd"
-              />
-            </template>
-            <template slot="validity">
-              <el-date-picker
-                v-model="search.validity"
-                size="mini"
-                type="daterange"
-                :picker-options="pickerOptions"
-                range-separator="至"
-                start-placeholder="开始日期"
-                end-placeholder="结束日期"
-                align="right"
-                value-format="yyyy-MM-dd"
-              />
-            </template>
-            <template slot="nowNumber">
-              <el-input v-model="search.nowNumber" size="mini" />
-            </template>
-            <template slot="preNumber">
-              <el-input v-model="search.preNumber" size="mini" />
-            </template>
-            <template slot="deviceName">
-              <el-input v-model="search.deviceName" size="mini" />
-            </template>
-            <template slot="deviceType">
-              <el-select
-                v-model="search.deviceType"
-                placeholder="请选择"
-                size="mini"
-                :clearable="true"
-              >
-                <el-option
-                  v-for="(v, k) in typeList"
-                  :key="k"
-                  :label="v"
-                  :value="k"
-                />
-              </el-select>
-            </template>
-            <template slot="deviceStatus">
-              <el-select
-                v-model="search.deviceStatus"
-                placeholder="请选择"
-                size="mini"
-                :clearable="true"
-              >
-                <el-option
-                  v-for="(v, k) in stateList"
-                  :key="k"
-                  :label="v"
-                  :value="k"
-                />
-              </el-select>
-            </template>
-            <!-- <template slot="place">
-                          <el-input v-model="search.place" size="mini" />
-                      </template> -->
-            <template slot="place">
-              <ibps-custom-dialog
-                v-model="search.place"
-                size="mini"
-                template-key="fjxzkdd"
-                multiple
-                :disabled="false"
-                type="dialog"
-                class="custom-dialog"
-                placeholder="请选择"
-                icon="el-icon-search"
-              />
-            </template>
-            <template slot="managePeople">
-              <ibps-user-selector
-                v-model="search.managePeople"
-                type="user"
-                readonly-text="text"
-                :multiple="true"
-                size="mini"
-                :filter="filter"
-                filtrate
+                      </div>
+                      <div class="item">
+                        建档时间:{{ row.bianZhiShiJian || '/' }}
+                      </div>
+                    </div>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="5" :push="2">
+                <el-row>
+                  <el-col :span="3">
+                    <el-image
+                      class="icon-image"
+                      :src="images[2]"
+                      fit="contain"
+                    />
+                  </el-col>
+                  <el-col :span="21">
+                    <div class="title">维护信息</div>
+                    <div class="ctx">
+                      <div class="item">
+                        是否维护:{{ row.shiFouWeiHu || '/' }}
+                      </div>
+                      <div class="item">
+                        是否24H开机:{{ row.jianKongYiJu || '/' }}
+                      </div>
+                      <div class="item">
+                        是否限用:{{ row.xiaoZhunWuCha || '/' }}
+                      </div>
+                    </div>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="5" :push="2">
+                <el-row>
+                  <el-col :span="3">
+                    <el-image
+                      class="icon-image"
+                      :src="images[3]"
+                      fit="contain"
+                    />
+                  </el-col>
+                  <el-col :span="21">
+                    <div class="title">校准信息</div>
+                    <div class="ctx">
+                      <div class="item">
+                        是否校准:{{ row.shiFouXiaoZhun || '/' }}
+                      </div>
+                      <div class="item">
+                        校准周期:{{
+                          row.xiaoZhunZQ ? `${row.xiaoZhunZQ}月` : '/'
+                        }}
+                      </div>
+                      <div class="item">
+                        最近校准时间:{{ row.yiXiaoRiQi || '/' }}
+                      </div>
+                      <div class="item">
+                        校准有效期至:{{ row.xiaoZhunYouXia || '/' }}
+                      </div>
+                    </div>
+                  </el-col>
+                </el-row>
+              </el-col>
+              <el-col :span="4" :push="1">
+                <el-row>
+                  <el-col :span="24">
+                    <el-image
+                      class="device-image"
+                      :src="ImageUrl(row)"
+                      fit="fill"
+                      :preview-src-list="ImageAllUrl(row)"
+                      :title="`[${row.sheBeiMingCheng}]设备首图,点击查看更多`"
+                    >
+                      <div slot="error" class="image-slot">
+                        <el-empty
+                          class="device-image"
+                          description="暂无图片"
+                          :image-size="70"
+                        />
+                      </div>
+                    </el-image>
+                  </el-col>
+                </el-row>
+              </el-col>
+            </el-row>
+          </template>
+          <!-- 搜索条件 -->
+          <template slot="pos" >
+            <ibps-user-selector
+            v-if="showDeptSeach"
+              v-model="search.pos"
+              type="position"
+              readonly-text="text"
+              :multiple="true"
+              size="mini"
+              :filter="filter"
+
+              filtrate
+            />
+            <el-input
+              v-else
+              :value="search.pos ? search.pos.split(',').map(id => switchIdToDept(id)).join(', ') : '无'"
+              readonly
+              size="mini"
+            />
+          </template>
+          <template slot="time">
+            <el-date-picker
+              v-model="search.time"
+              size="mini"
+              type="daterange"
+              :picker-options="pickerOptions"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              align="right"
+              value-format="yyyy-MM-dd"
+            />
+          </template>
+          <template slot="validity">
+            <el-date-picker
+              v-model="search.validity"
+              size="mini"
+              type="daterange"
+              :picker-options="pickerOptions"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              align="right"
+              value-format="yyyy-MM-dd"
+            />
+          </template>
+          <template slot="nowNumber">
+            <el-input v-model="search.nowNumber" size="mini" />
+          </template>
+          <template slot="preNumber">
+            <el-input v-model="search.preNumber" size="mini" />
+          </template>
+          <template slot="deviceName">
+            <el-input v-model="search.deviceName" size="mini" />
+          </template>
+          <template slot="deviceType">
+            <el-select
+              v-model="search.deviceType"
+              placeholder="请选择"
+              size="mini"
+              :clearable="true"
+            >
+              <el-option
+                v-for="(v, k) in typeList"
+                :key="k"
+                :label="v"
+                :value="k"
               />
-            </template>
-            <template slot="deviceClass">
-              <ibps-custom-dialog
-                v-model="search.deviceClass"
-                size="mini"
-                :template-key="config ? 'gwzzdhkrcwh' : 'sbbqdhk'"
-                multiple
-                :disabled="false"
-                type="dialog"
-                class="custom-dialog"
-                placeholder="请选择"
-                icon="el-icon-search"
+            </el-select>
+          </template>
+          <template slot="deviceStatus">
+            <el-select
+              v-model="search.deviceStatus"
+              placeholder="请选择"
+              size="mini"
+              :clearable="true"
+            >
+              <el-option
+                v-for="(v, k) in stateList"
+                :key="k"
+                :label="v"
+                :value="k"
               />
-            </template>
-          </ibps-crud>
-        </template>
-      </ibps-container>
-      <DeviceDialog
-        v-if="deviceDialogShow"
-        :params="params"
-        :state-list="stateList"
-        :type-list="typeList"
-        :tab-list="tabList"
-        :hide-sys-device-no="hideSysDeviceNo"
-        :has-fu-ze-ren-dian-hua="hasFuZeRenDianHua"
-        :has-chang-jia-lian-xi-ren="hasChangJiaLianXiRen"
-        :readonly="!hasRole"
-        @close="close"
-      />
-      <input
-        id=""
-        ref="file1"
-        type="file"
-        name=""
-        accept=".xlsx,.xls"
-        @change="handleUploadChange1"
-      />
-      <input
-        id=""
-        ref="file2"
-        type="file"
-        name=""
-        accept=".xlsx,.xls"
-        @change="handleUploadChange2"
-      />
-  
-      <custom-dialog
-        :visible="customDialogVisible"
-        :value="[]"
-        template-key="sbfzpz"
-        :dynamic-params="{}"
-        @close="(visible) => (customDialogVisible = visible)"
-      />
-  
-      <bpmn-formrender
-        :visible="npmDialogFormVisible"
-        def-id="1120718364969271296"
-        @close="(visible) => (npmDialogFormVisible = visible)"
-      />
-      <!-- <DeviceTagWeiNing v-if="tagName==='deviceTagWeiNing'" :scan-visible="printVisible" :obj="printObj" :state-list="stateList" @scanOff="scanOff" /> -->
-      <DeviceTagTemplateTwo
-        v-if="tagName === 'deviceTagTemplateTwo'"
-        :tag-data="tagData"
-        :scan-visible="printVisible"
-        :obj="printObj"
-        :state-list="stateList"
-        @scanOff="scanOff"
-      />
-      <DeviceTagTemplateThree
-        v-else-if="tagName === 'deviceTagTemplateThree'"
-        :tag-data="tagData"
-        :scan-visible="printVisible"
-        :obj="printObj"
-        :state-list="stateList"
-        @scanOff="scanOff"
+            </el-select>
+          </template>
+          <!-- <template slot="place">
+                        <el-input v-model="search.place" size="mini" />
+                    </template> -->
+          <template slot="place">
+            <ibps-custom-dialog
+              v-model="search.place"
+              size="mini"
+              template-key="fjxzkdd"
+              multiple
+              :disabled="false"
+              type="dialog"
+              class="custom-dialog"
+              placeholder="请选择"
+              icon="el-icon-search"
+            />
+          </template>
+          <template slot="managePeople">
+            <ibps-user-selector
+              v-model="search.managePeople"
+              type="user"
+              readonly-text="text"
+              :multiple="true"
+              size="mini"
+              :filter="filter"
+              filtrate
+            />
+          </template>
+          <template slot="deviceClass">
+            <ibps-custom-dialog
+              v-model="search.deviceClass"
+              size="mini"
+              :template-key="config ? 'gwzzdhkrcwh' : 'sbbqdhk'"
+              multiple
+              :disabled="false"
+              type="dialog"
+              class="custom-dialog"
+              placeholder="请选择"
+              icon="el-icon-search"
+            />
+          </template>
+        </ibps-crud>
+      </template>
+    </ibps-container>
+    <DeviceDialog
+      v-if="deviceDialogShow"
+      :params="params"
+      :state-list="stateList"
+      :type-list="typeList"
+      :tab-list="tabList"
+      :hide-sys-device-no="hideSysDeviceNo"
+      :has-fu-ze-ren-dian-hua="hasFuZeRenDianHua"
+      :has-chang-jia-lian-xi-ren="hasChangJiaLianXiRen"
+      :readonly="!hasRole || readOnly"
+      @close="close"
+    />
+    <input
+      id=""
+      ref="file1"
+      type="file"
+      name=""
+      accept=".xlsx,.xls"
+      @change="handleUploadChange1"
+    />
+    <input
+      id=""
+      ref="file2"
+      type="file"
+      name=""
+      accept=".xlsx,.xls"
+      @change="handleUploadChange2"
+    />
+
+    <custom-dialog
+      :visible="customDialogVisible"
+      :value="[]"
+      template-key="sbfzpz"
+      :dynamic-params="{}"
+      @close="(visible) => (customDialogVisible = visible)"
+    />
+
+    <bpmn-formrender
+      :visible="npmDialogFormVisible"
+      def-id="1120718364969271296"
+      @close="(visible) => (npmDialogFormVisible = visible)"
+    />
+    <!-- <DeviceTagWeiNing v-if="tagName==='deviceTagWeiNing'" :scan-visible="printVisible" :obj="printObj" :state-list="stateList" @scanOff="scanOff" /> -->
+    <DeviceTagTemplateTwo
+      v-if="tagName === 'deviceTagTemplateTwo'"
+      :tag-data="tagData"
+      :scan-visible="printVisible"
+      :obj="printObj"
+      :state-list="stateList"
+      @scanOff="scanOff"
+    />
+    <DeviceTagTemplateThree
+      v-else-if="tagName === 'deviceTagTemplateThree'"
+      :tag-data="tagData"
+      :scan-visible="printVisible"
+      :obj="printObj"
+      :state-list="stateList"
+      @scanOff="scanOff"
+    />
+    <DeviceTag
+      v-else
+      :scan-visible="printVisible"
+      :obj="printObj"
+      :tag-data="tagData"
+      :state-list="stateList"
+      @scanOff="scanOff"
+    />
+    <el-dialog
+      :close-on-click-modal="false"
+      :close-on-press-escape="false"
+      :top="'3vh'"
+      :width="'90%'"
+      class="js-custom-dialog"
+      append-to-body
+      :fullscreen="false"
+      :visible.sync="iframeVisible"
+    >
+      <iframe
+        :src="srcUrl"
+        :height="'100%'"
+        :width="'100%'"
+        frameborder="0"
+        scrolling="no"
       />
-      <DeviceTag
-        v-else
-        :scan-visible="printVisible"
-        :obj="printObj"
-        :tag-data="tagData"
-        :state-list="stateList"
-        @scanOff="scanOff"
-      />
-      <el-dialog
-        :close-on-click-modal="false"
-        :close-on-press-escape="false"
-        :top="'3vh'"
-        :width="'90%'"
-        class="js-custom-dialog"
-        append-to-body
-        :fullscreen="false"
-        :visible.sync="iframeVisible"
-      >
-        <iframe
-          :src="srcUrl"
-          :height="'100%'"
-          :width="'100%'"
-          frameborder="0"
-          scrolling="no"
-        />
-      </el-dialog>
-    </div>
-  </template>
-  
-  <script>
-  import { getSetting } from '@/utils/query'
-  import image01 from '@/assets/images/device/01.png'
-  import image02 from '@/assets/images/device/02.png'
-  import image03 from '@/assets/images/device/03.png'
-  import image04 from '@/assets/images/device/04.png'
-  import { getImage } from '@/api/platform/file/attachment'
-  import { download } from '@/api/platform/file/attachment'
-  
-  import xlsx from 'xlsx'
-  import fs from 'file-saver'
-  import DataTemplateFormrenderDialog from '@/business/platform/data/templaterender/form/dialog.vue'
-  import ActionUtils from '@/utils/action'
-  import FixHeight from '@/mixins/height'
-  import ibpsUserSelector from '@/business/platform/org/selector'
-  import DeviceDialog from './deviceDialog.vue'
-  import {
-    queryequipmentCard,
-    removeEquipmentCard,
-    getequipmentCard,
-    saveEquipmentCard
-  } from '@/api/platform/device/device'
-  import CustomDialog from '@/business/platform/data/templaterender/custom-dialog/dialog'
-  import dayjs from 'dayjs'
-  import DeviceTag from '@/views/system/jbdScan/goods/deviceTag.vue'
-  // import DeviceTagWeiNing from '@/views/system/jbdScan/goods/deviceTagWeiNing.vue'
-  import DeviceTagTemplateTwo from '@/views/system/jbdScan/goods/deviceTagTemplateTwo'
-  import DeviceTagTemplateThree from '@/views/system/jbdScan/goods/deviceTagTemplateThree'
-  export default {
-    components: {
-      DeviceTag,
-      // DeviceTagWeiNing,
-      DeviceTagTemplateTwo,
-      DeviceTagTemplateThree,
-      DataTemplateFormrenderDialog,
-      DeviceDialog,
-      ibpsUserSelector,
-      CustomDialog,
-      IbpsCustomDialog: () =>
-        import('@/business/platform/data/templaterender/custom-dialog')
-    },
-    mixins: [FixHeight],
-    data() {
-      const { userId, level = {}, position, setting } = this.$store.getters || {}
-      return {
-        config: setting?.postJob?.allocation || false,
-        filter: [
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getSetting } from '@/utils/query'
+import image01 from '@/assets/images/device/01.png'
+import image02 from '@/assets/images/device/02.png'
+import image03 from '@/assets/images/device/03.png'
+import image04 from '@/assets/images/device/04.png'
+import { getImage } from '@/api/platform/file/attachment'
+import { download } from '@/api/platform/file/attachment'
+
+import xlsx from 'xlsx'
+import fs from 'file-saver'
+import DataTemplateFormrenderDialog from '@/business/platform/data/templaterender/form/dialog.vue'
+import ActionUtils from '@/utils/action'
+import FixHeight from '@/mixins/height'
+import ibpsUserSelector from '@/business/platform/org/selector'
+import DeviceDialog from './deviceDialog.vue'
+import {
+  queryequipmentCard,
+  removeEquipmentCard,
+  getequipmentCard,
+  saveEquipmentCard
+} from '@/api/platform/device/device'
+import CustomDialog from '@/business/platform/data/templaterender/custom-dialog/dialog'
+import dayjs from 'dayjs'
+import DeviceTag from '@/views/system/jbdScan/goods/deviceTag.vue'
+// import DeviceTagWeiNing from '@/views/system/jbdScan/goods/deviceTagWeiNing.vue'
+import DeviceTagTemplateTwo from '@/views/system/jbdScan/goods/deviceTagTemplateTwo'
+import DeviceTagTemplateThree from '@/views/system/jbdScan/goods/deviceTagTemplateThree'
+export default {
+  components: {
+    DeviceTag,
+    // DeviceTagWeiNing,
+    DeviceTagTemplateTwo,
+    DeviceTagTemplateThree,
+    DataTemplateFormrenderDialog,
+    DeviceDialog,
+    ibpsUserSelector,
+    CustomDialog,
+    IbpsCustomDialog: () =>
+      import('@/business/platform/data/templaterender/custom-dialog')
+  },
+  mixins: [FixHeight],
+  data() {
+    const { userId, level = {}, position, setting } = this.$store.getters || {}
+
+    return {
+      config: setting?.postJob?.allocation || false,
+      filter: [
+        {
+          descVal: '1',
+          includeSub: true,
+          old: 'position',
+          partyId: this.$store.getters.userInfo.employee.positions,
+          partyName: '',
+          scriptContent: '',
+          type: 'user',
+          userType: 'position'
+        }
+      ],
+      images: [image01, image02, image03, image04],
+      ImportDeviceType: '',
+      iframeVisible: false,
+      srcUrl: '',
+      printObj: [],
+      printVisible: false,
+      DialogVisible: true,
+      npmDialogFormVisible: false,
+      customDialogVisible: false,
+      pickerOptions: {
+        shortcuts: [
+          {
+            text: '最近一周',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
+              picker.$emit('pick', [start, end])
+            }
+          },
+          {
+            text: '最近一个月',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+              picker.$emit('pick', [start, end])
+            }
+          },
           {
-            descVal: '1',
-            includeSub: true,
-            old: 'position',
-            partyId: this.$store.getters.userInfo.employee.positions,
-            partyName: '',
-            scriptContent: '',
-            type: 'user',
-            userType: 'position'
+            text: '最近三个月',
+            onClick(picker) {
+              const end = new Date()
+              const start = new Date()
+              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
+              picker.$emit('pick', [start, end])
+            }
           }
-        ],
-        images: [image01, image02, image03, image04],
-        ImportDeviceType: '',
-        iframeVisible: false,
-        srcUrl: '',
-        printObj: [],
-        printVisible: false,
-        DialogVisible: true,
-        npmDialogFormVisible: false,
-        customDialogVisible: false,
-        pickerOptions: {
-          shortcuts: [
-            {
-              text: '最近一周',
-              onClick(picker) {
-                const end = new Date()
-                const start = new Date()
-                start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-                picker.$emit('pick', [start, end])
-              }
-            },
-            {
-              text: '最近一个月',
-              onClick(picker) {
-                const end = new Date()
-                const start = new Date()
-                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-                picker.$emit('pick', [start, end])
-              }
-            },
-            {
-              text: '最近三个月',
-              onClick(picker) {
-                const end = new Date()
-                const start = new Date()
-                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-                picker.$emit('pick', [start, end])
-              }
+        ]
+      },
+      params: {},
+      deviceDialogShow: false,
+      position: position,
+      level: level.second || level.first,
+      userId: userId,
+      search: {
+        pos: '',
+        time: [],
+        nowNumber: '',
+        preNumber: '',
+        deviceName: '',
+        deviceType: '',
+        deviceStatus: '',
+        place: '',
+        managePeople: '',
+        deviceClass: '',
+        validity: ''
+      },
+      loading: false,
+      pkKey: 'id', // 主键  如果主键不是pk需要传主键
+      pkValue: '',
+      templateKey: '',
+      visible: false,
+      categoryKey: '',
+      tableTitle: '设备基本信息列表', // 标题
+      listData: [],
+      selectListData: [], // 全部数据
+      bianlistData: {
+        dataResult: [],
+        pageResult: {
+          limit: 0,
+          page: 0,
+          totalCount: 0,
+          totalPages: 0
+        }
+      },
+      showDeptSeach:true,
+      listConfig: {
+        // 工具栏
+        toolbars: [
+          { key: 'search' },
+          {
+            key: 'customAdd',
+            label: '设备建档',
+            icon: 'ibps-icon-plus',
+            type: 'success'
+          },
+          {
+            key: 'customBpm',
+            label: '设备台账',
+            icon: 'ibps-icon-file-text',
+            type: 'info'
+          },
+          // todo 待开发
+          {
+            key: 'customPrint',
+            label: '打印标签',
+            icon: 'ibps-icon-cog',
+            type: 'warning'
+          },
+          {
+            key: 'customExport',
+            label: '导出数据',
+            icon: 'ibps-icon-sign-in',
+            type: 'primary'
+          },
+          {
+            key: 'customImport',
+            label: '导入数据',
+            icon: 'ibps-icon-sign-in',
+            type: 'primary'
+          },
+          {
+            key: 'customSetting',
+            label: '岗位/分组配置',
+            icon: 'ibps-icon-cogs',
+            type: 'info'
+          },
+          {
+            key: 'customRemove',
+            label: '删除',
+            icon: 'ibps-icon-close',
+            type: 'danger',
+            hidden: () => {
+              return !this.hasRole
             }
-          ]
-        },
-        params: {},
-        deviceDialogShow: false,
-        position: position,
-        level: level.second || level.first,
-        userId: userId,
-        search: {
-          pos: '',
-          time: [],
-          nowNumber: '',
-          preNumber: '',
-          deviceName: '',
-          deviceType: '',
-          deviceStatus: '',
-          place: '',
-          managePeople: '',
-          deviceClass: '',
-          validity: ''
-        },
-        loading: false,
-        pkKey: 'id', // 主键  如果主键不是pk需要传主键
-        pkValue: '',
-        templateKey: '',
-        visible: false,
-        categoryKey: '',
-        tableTitle: '设备基本信息列表', // 标题
-        listData: [],
-        selectListData: [], // 全部数据
-        bianlistData: {
-          dataResult: [],
-          pageResult: {
-            limit: 0,
-            page: 0,
-            totalCount: 0,
-            totalPages: 0
           }
-        },
-        listConfig: {
-          // 工具栏
-          toolbars: [
-            { key: 'search' },
-            {
-              key: 'customAdd',
-              label: '设备建档',
-              icon: 'ibps-icon-plus',
-              type: 'success'
-            },
-            {
-              key: 'customBpm',
-              label: '设备台账',
-              icon: 'ibps-icon-file-text',
-              type: 'info'
-            },
-            // todo 待开发
-            {
-              key: 'customPrint',
-              label: '打印标签',
-              icon: 'ibps-icon-cog',
-              type: 'warning'
-            },
-            {
-              key: 'customExport',
-              label: '导出数据',
-              icon: 'ibps-icon-sign-in',
-              type: 'primary'
-            },
+        ],
+        // 查询条件
+        searchForm: {
+          itemWidth: 200,
+          labelWidth: 100,
+          forms: [
+            { prop: '', label: '部门', fieldType: 'slot', slotName: 'pos' }, // user 插槽
             {
-              key: 'customImport',
-              label: '导入数据',
-              icon: 'ibps-icon-sign-in',
-              type: 'primary'
+              prop: '',
+              label: '建档时间',
+              fieldType: 'slot',
+              slotName: 'time'
             },
             {
-              key: 'customSetting',
-              label: '岗位/分组配置',
-              icon: 'ibps-icon-cogs',
-              type: 'info'
+              prop: '',
+              label: '设备编号',
+              fieldType: 'slot',
+              slotName: 'nowNumber'
             },
             {
-              key: 'customRemove',
-              label: '删除',
-              icon: 'ibps-icon-close',
-              type: 'danger',
-              hidden: () => {
-                return !this.hasRole
-              }
-            }
-          ],
-          // 查询条件
-          searchForm: {
-            forms: [
-              { prop: '', label: '部门', fieldType: 'slot', slotName: 'pos' }, // user 插槽
-              {
-                prop: '',
-                label: '建档时间',
-                fieldType: 'slot',
-                slotName: 'time'
-              },
-              {
-                prop: '',
-                label: '设备编号',
-                fieldType: 'slot',
-                slotName: 'nowNumber'
-              },
-              {
-                prop: '',
-                label: '原设备编号',
-                fieldType: 'slot',
-                slotName: 'preNumber'
-              },
-              {
-                prop: '',
-                label: '设备名称',
-                fieldType: 'slot',
-                slotName: 'deviceName'
-              },
-              {
-                prop: '',
-                label: '设备类型',
-                fieldType: 'slot',
-                slotName: 'deviceType'
-              },
-              {
-                prop: '',
-                label: '设备状态',
-                fieldType: 'slot',
-                slotName: 'deviceStatus'
-              },
-              {
-                prop: '',
-                label: '放置地点',
-                fieldType: 'slot',
-                slotName: 'place'
-              },
-              {
-                prop: '',
-                label: '保管人',
-                fieldType: 'slot',
-                slotName: 'managePeople'
-              },
-              {
-                prop: '',
-                label: '岗位/分组',
-                fieldType: 'slot',
-                slotName: 'deviceClass'
-              }
-              // {
-              //   prop: '',
-              //   label: '校准有效期',
-              //   fieldType: 'slot',
-              //   slotName: 'validity'
-              // }
-            ]
-          },
-          // 表格字段配置
-          columns: [
-            { type: 'expand', slotName: 'expandSlot' },
-            {
-              prop: 'bianZhiBuMen',
-              label: '部门',
-              slotName: 'posSlot',
-              width: 110,
-              sortable: true
+              prop: '',
+              label: '原设备编号',
+              fieldType: 'slot',
+              slotName: 'preNumber'
             },
             {
-              prop: 'bianZhiShiJian',
-              label: '建档时间',
-              sortable: true,
-              width: 130
+              prop: '',
+              label: '设备名称',
+              fieldType: 'slot',
+              slotName: 'deviceName'
             },
-            { prop: 'sheBeiShiBieH', label: '设备编号', width: 110,sortable: true },
-            { prop: 'yuanSheBeiBian', label: '原设备编号', width: 120,sortable: true },
-            { prop: 'sheBeiMingCheng', label: '设备名称', sortable: false },
             {
-              prop: 'sheBeiLeiXing',
+              prop: '',
               label: '设备类型',
-              sortable: false,
-              width: 85,
-              slotName: 'deviceTypeSlot'
+              fieldType: 'slot',
+              slotName: 'deviceType'
             },
             {
-              prop: 'sheBeiZhuangTa',
+              prop: '',
               label: '设备状态',
-              sortable: false,
-              width: 85,
-              slotName: 'deviceStateSlot'
+              fieldType: 'slot',
+              slotName: 'deviceStatus'
             },
             {
-              prop: 'cunFangWeiZhi',
+              prop: '',
               label: '放置地点',
-              slotName: 'placeSlot',
-              sortable: false
+              fieldType: 'slot',
+              slotName: 'place'
             },
             {
-              prop: 'guanLiRen',
+              prop: '',
               label: '保管人',
-              slotName: 'userSlot',
-              width: 90,
-              sortable: false
+              fieldType: 'slot',
+              slotName: 'managePeople'
             },
             {
-              prop: 'weiHuFangShi',
+              prop: '',
               label: '岗位/分组',
-              slotName: 'deviceSlot',
-              sortable: false
-            },
-            { prop: 'guiGeXingHao', label: '规格型号', sortable: false },
-            { prop: 'gongYingShang', label: '供应商', sortable: false },
-            { prop: 'biXuDeHuanJin', label: '核查人', slotName:'heChaRenSlot',width: 90, sortable: false },
-            { prop: '', label: '操作', width: 130, slotName: 'customButton' }
+              fieldType: 'slot',
+              slotName: 'deviceClass'
+            }
+            // {
+            //   prop: '',
+            //   label: '校准有效期',
+            //   fieldType: 'slot',
+            //   slotName: 'validity'
+            // }
           ]
         },
-        pagination: {
-          limit: 20,
-          page: 1
-        },
-        sorts: [{ field: 'BIAN_ZHI_SHI_JIAN', order: 'desc' }],
-        sqlWhere: {},
-        searchWhere: {},
-        deviceColumns: {
-          bianZhiBuMen: '部门',
-          sheBeiMingCheng: '设备名称',
-          // sheBeiShiBieH: '设备编号(导入无需填写)',
-          yuanSheBeiBian: '原设备编号(必填,且不可重复)',
-          sheBeiZhuangTa: '设备状态(合格/停用/限用)',
-          sheBeiLeiXing: '设备类型(检验系统/通用设备/软件/信息系统)',
-          shiFouWeiHu: '是否维护(是/否)',
-          shiFouXiaoZhun: '是否校准(是/否)',
-          weiHuFangShi: '岗位/分组',
-          guiGeXingHao: '规格型号',
-          cunFangDiDian: '存放地点(格式:房间号+空格+房间名)',
-          guanLiRen: '保管人',
-          ziChanBianHao: '资产编号',
-          ziChanYuanZhi: '资产原值(元)',
-          lianXiFangShi: '联系方式',
-          changShang: '厂商',
-          jiShenXuHao: '机身序号',
-          zhuCeZhengHao: '注册证号',
-          heChaXiaoZhun: '使用年限(年)',
-          chuChangRiQi: '出厂日期',
-          yanShouRiQi: '验收日期',
-          jieShouRiQi: '接收日期',
-          qiYongRiQi: '投入日期',
-          yiXiaoRiQi: '已校日期',
-          xiaoZhunZQ: '检定/校准周期(以月为单位)',
-          xiaoZhunYouXia: '校准有效期至',
-          shiYongKeShi: '检定/校准单位',
-          ceLiangGongZuo: '预期测量范围',
-          huanJingYaoQiu: '环境要求',
-          dianYuanYaoQiu: '电源要求',
-          jieShouZhuangTai: '接收时状态(新设备/二手或翻新设备)',
-          jianDingXiao: '检定/校准参数',
-          zuiDaYunCha: 'U/精确度/最大允差',
-          zhengShuBianHa: '证书编号',
-          xiuZhengZhiXiu: '修正值/修正因子',
-          wenDuYingYong: '温度应用修正值',
-          gongYingShang:'供应商',
-          shiDuYingYong: '湿度应用修正值'
-          // biXuDeHuanJin: '核查人',
-          // biXuSheShi: '核查日期',
-        },
-        projectColums: {
-          yuanSheBeiBian: '原设备编号*',
-          sheBeiMingCheng: '设备名称*',
-          weiHuLeiXing:
-            '维护类型*(日保养/周保养/月保养/季度保养/半年保养/年保养/按需保养)',
-          weiHuRiQi: '维护日期*',
-          weiHuXiangMuC: '维护项目*'
-        },
-        dateFieldRange: [
-          'chuChangRiQi',
-          'yanShouRiQi',
-          'jieShouRiQi',
-          'qiYongRiQi',
-          'yiXiaoRiQi',
-          'xiaoZhunYouXia'
-        ],
-        requiredFieldMap: {
-          bianZhiBuMen: '部门',
-          sheBeiMingCheng: '设备名称',
-          yuanSheBeiBian: '原设备编号',
-          sheBeiZhuangTa: '设备状态',
-          sheBeiLeiXing: '设备类型',
-          shiFouWeiHu: '是否维护',
-          shiFouXiaoZhun: '是否校准'
-        },
-        dateFieldsMap: {
-          chuChangRiQi: '出厂日期',
-          yanShouRiQi: '验收日期',
-          jieShouRiQi: '接收日期',
-          qiYongRiQi: '投入日期',
-          yiXiaoRiQi: '已校日期',
-          xiaoZhunYouXia: '校准有效期至'
-          // 'biXuSheShi': '核查日期'
-        },
-        validationRules: {
-          设备状态: {
-            field: 'sheBeiZhuangTa',
-            range: ['合格', '停用', '限用']
+        // 表格字段配置
+        columns: [
+          { type: 'expand', slotName: 'expandSlot' },
+          {
+            prop: 'bianZhiBuMen',
+            label: '部门',
+            slotName: 'posSlot',
+            sortable: true
           },
-          设备类型: {
-            field: 'sheBeiLeiXing',
-            range: ['检验系统', '通用设备', '软件', '信息系统']
+          {
+            prop: 'bianZhiShiJian',
+            label: '建档时间',
+            sortable: true,
+            width: 130
           },
-          接收时状态: {
-            field: 'jieShouZhuangTai',
-            range: ['新设备', '二手或翻新设备']
+          { prop: 'sheBeiShiBieH', label: '设备编号', sortable: true },
+          { prop: 'yuanSheBeiBian', label: '原设备编号', sortable: true },
+          { prop: 'sheBeiMingCheng', label: '设备名称', sortable: true },
+          {
+            prop: 'sheBeiLeiXing',
+            label: '设备类型',
+            sortable: true,
+            slotName: 'deviceTypeSlot'
           },
-          是否校准: {
-            field: 'shiFouXiaoZhun',
-            range: ['是', '否']
+          {
+            prop: 'sheBeiZhuangTa',
+            label: '设备状态',
+            sortable: true,
+            slotName: 'deviceStateSlot'
           },
-          是否维护: {
-            field: 'shiFouWeiHu',
-            range: ['是', '否']
-          }
-        },
-        numberFieldsMap: {
-          xiaoZhunZQ: '检定/校准周期(以月为单位)',
-          heChaXiaoZhun: '使用年限(年)',
-          ziChanYuanZhi: '资产原值(元)'
-        },
-        maintenanceRequiredFieldMap: {
-          yuanSheBeiBian: '原设备编号',
-          sheBeiMingCheng: '设备名称',
-          weiHuLeiXing: '维护类型',
-          weiHuRiQi: '维护日期',
-          weiHuXiangMuC: '维护项目'
+          {
+            prop: 'cunFangWeiZhi',
+            label: '放置地点',
+            slotName: 'placeSlot',
+            sortable: true
+          },
+          {
+            prop: 'guanLiRen',
+            label: '保管人',
+            slotName: 'userSlot',
+            sortable: true
+          },
+          {
+            prop: 'weiHuFangShi',
+            label: '岗位/分组',
+            slotName: 'deviceSlot',
+            sortable: true
+          },
+          { prop: 'guiGeXingHao', label: '规格型号', sortable: true },
+          { prop: '', label: '操作', width: 130, slotName: 'customButton' }
+        ]
+      },
+      pagination: {
+        limit: 20,
+        page: 1
+      },
+      sorts: [{ field: 'BIAN_ZHI_SHI_JIAN', order: 'desc' }],
+      sqlWhere: {},
+      searchWhere: {},
+      deviceColumns: {
+        bianZhiBuMen: '部门',
+        sheBeiMingCheng: '设备名称',
+        // sheBeiShiBieH: '设备编号(导入无需填写)',
+        yuanSheBeiBian: '原设备编号(必填,且不可重复)',
+        sheBeiZhuangTa: '设备状态(合格/停用/限用)',
+        sheBeiLeiXing: '设备类型(检验系统/通用设备/软件/信息系统)',
+        shiFouWeiHu: '是否维护(是/否)',
+        shiFouXiaoZhun: '是否校准(是/否)',
+        weiHuFangShi: '岗位/分组',
+        guiGeXingHao: '规格型号',
+        cunFangDiDian: '存放地点(格式:房间号+空格+房间名)',
+        guanLiRen: '保管人',
+        ziChanBianHao: '资产编号',
+        ziChanYuanZhi: '资产原值(元)',
+        gongYingShang: '供应商',
+        lianXiFangShi: '联系方式',
+        changShang: '厂商',
+        jiShenXuHao: '机身序号',
+        zhuCeZhengHao: '注册证号',
+        heChaXiaoZhun: '使用年限(年)',
+        chuChangRiQi: '出厂日期',
+        yanShouRiQi: '验收日期',
+        jieShouRiQi: '接收日期',
+        qiYongRiQi: '投入日期',
+        yiXiaoRiQi: '已校日期',
+        xiaoZhunZQ: '检定/校准周期(以月为单位)',
+        xiaoZhunYouXia: '校准有效期至',
+        shiYongKeShi: '检定/校准单位',
+        ceLiangGongZuo: '预期测量范围',
+        huanJingYaoQiu: '环境要求',
+        dianYuanYaoQiu: '电源要求',
+        jieShouZhuangTai: '接收时状态(新设备/二手或翻新设备)',
+        jianDingXiao: '检定/校准参数',
+        zuiDaYunCha: 'U/精确度/最大允差',
+        zhengShuBianHa: '证书编号',
+        xiuZhengZhiXiu: '修正值/修正因子',
+        wenDuYingYong: '温度应用修正值',
+        shiDuYingYong: '湿度应用修正值'
+        // biXuDeHuanJin: '核查人',
+        // biXuSheShi: '核查日期',
+      },
+      projectColums: {
+        yuanSheBeiBian: '原设备编号*',
+        sheBeiMingCheng: '设备名称*',
+        weiHuLeiXing:
+          '维护类型*(日保养/周保养/月保养/季度保养/半年保养/年保养/按需保养)',
+        weiHuRiQi: '维护日期*',
+        weiHuXiangMuC: '维护项目*'
+      },
+      dateFieldRange: [
+        'chuChangRiQi',
+        'yanShouRiQi',
+        'jieShouRiQi',
+        'qiYongRiQi',
+        'yiXiaoRiQi',
+        'xiaoZhunYouXia'
+      ],
+      requiredFieldMap: {
+        bianZhiBuMen: '部门',
+        sheBeiMingCheng: '设备名称',
+        yuanSheBeiBian: '原设备编号',
+        sheBeiZhuangTa: '设备状态',
+        sheBeiLeiXing: '设备类型',
+        shiFouWeiHu: '是否维护',
+        shiFouXiaoZhun: '是否校准'
+      },
+      dateFieldsMap: {
+        chuChangRiQi: '出厂日期',
+        yanShouRiQi: '验收日期',
+        jieShouRiQi: '接收日期',
+        qiYongRiQi: '投入日期',
+        yiXiaoRiQi: '已校日期',
+        xiaoZhunYouXia: '校准有效期至'
+        // 'biXuSheShi': '核查日期'
+      },
+      validationRules: {
+        设备状态: {
+          field: 'sheBeiZhuangTa',
+          range: ['合格', '停用', '限用']
         },
-        maintenanceValidationRules: {
-          维护类型: {
-            field: 'weiHuLeiXing',
-            range: [
-              '日保养',
-              '周保养',
-              '月保养',
-              '季度保养',
-              '半年保养',
-              '年保养',
-              '按需保养'
-            ]
-          }
+        设备类型: {
+          field: 'sheBeiLeiXing',
+          range: ['检验系统', '通用设备', '软件', '信息系统']
         },
-        maintenanceDateValidationRules: {
-          日保养: this.generateDayRule(),
-          周保养: this.generateRule(7, `每周`, ``),
-          月保养: this.generateRule(28, `每月第`, `日`),
-          半年保养: this.generateRule(6, `每半年第`, `个月`),
-          季度保养: this.generateRule(3, `每季度第`, `个月`),
-          年保养: this.generateRule(12, `每年第`, `个月`),
-          按需保养: ['/']
+        接收时状态: {
+          field: 'jieShouZhuangTai',
+          range: ['新设备', '二手或翻新设备']
         },
-        stateList: { 停用: '停用', 报废: '报废', 合格: '合格' },
-        hideSysDeviceNo: false,
-        hasFuZeRenDianHua: false,
-        hasChangJiaLianXiRen: false,
-        tabList: {},
-        hasRole: true,
-        typeList: {
-          检验系统: '检验系统',
-          通用设备: '通用设备',
-          软件: '软件',
-          信息系统: '信息系统'
+        是否校准: {
+          field: 'shiFouXiaoZhun',
+          range: ['是', '否']
         },
-        tagName: '',
-        tagData: {},
-        config: setting?.postJob?.allocation || false
+        是否维护: {
+          field: 'shiFouWeiHu',
+          range: ['是', '否']
+        }
+      },
+      numberFieldsMap: {
+        xiaoZhunZQ: '检定/校准周期(以月为单位)',
+        heChaXiaoZhun: '使用年限(年)',
+        ziChanYuanZhi: '资产原值(元)'
+      },
+      maintenanceRequiredFieldMap: {
+        yuanSheBeiBian: '原设备编号',
+        sheBeiMingCheng: '设备名称',
+        weiHuLeiXing: '维护类型',
+        weiHuRiQi: '维护日期',
+        weiHuXiangMuC: '维护项目'
+      },
+      maintenanceValidationRules: {
+        维护类型: {
+          field: 'weiHuLeiXing',
+          range: [
+            '日保养',
+            '周保养',
+            '月保养',
+            '季度保养',
+            '半年保养',
+            '年保养',
+            '按需保养'
+          ]
+        }
+      },
+      maintenanceDateValidationRules: {
+        日保养: this.generateDayRule(),
+        周保养: this.generateRule(7, `每周`, ``),
+        月保养: this.generateRule(28, `每月第`, `日`),
+        半年保养: this.generateRule(6, `每半年第`, `个月`),
+        季度保养: this.generateRule(3, `每季度第`, `个月`),
+        年保养: this.generateRule(12, `每年第`, `个月`),
+        按需保养: ['/']
+      },
+      stateList: { 停用: '停用', 报废: '报废', 合格: '合格' },
+      hideSysDeviceNo: false,
+      hasFuZeRenDianHua: false,
+      hasChangJiaLianXiRen: false,
+      tabList: {},
+      hasRole: true,
+      readOnly: this.$route.fullPath === '/xxgl/sbda',
+      typeList: {
+        检验系统: '检验系统',
+        通用设备: '通用设备',
+        软件: '软件',
+        信息系统: '信息系统'
+      },
+      tagName: '',
+      tagData: {},
+      config: setting?.postJob?.allocation || false
+    }
+  },
+  async mounted() {
+    const {
+      stateList,
+      hideSysDeviceNo,
+      tabList,
+      hasDeviceRole,
+      typeList,
+      hasFuZeRenDianHua,
+      hasChangJiaLianXiRen
+    } = (await getSetting('device')) || {}
+    const { tagData, tagName } = (await getSetting('deviceTag')) || {}
+    if (tagName) {
+      console.debug('tagName', tagName)
+      this.tagName = tagName
+      this.tagData = tagData
+    }
+    if (hasDeviceRole) {
+      console.debug('hasDeviceRole', hasDeviceRole)
+      const { role, isSuper } = this.$store.getters || {}
+      this.hasRole =
+        isSuper || role.some((r) => hasDeviceRole.includes(r.alias))
+    }
+    if (stateList) {
+      console.debug('stateList', stateList)
+      this.stateList = stateList
+    }
+    if (typeList) {
+      console.debug('typeList', typeList)
+      this.typeList = typeList
+    }
+    if (hideSysDeviceNo) {
+      this.hideSysDeviceNo = hideSysDeviceNo
+      // 列表隐藏设备编号 将原设备编号改为设备编号
+      this.listConfig.columns = this.listConfig.columns.filter(
+        (i) => i.prop !== 'sheBeiShiBieH'
+      )
+      this.listConfig.columns.find((i) => i.prop === 'yuanSheBeiBian').label =
+        '设备编号'
+      // 查询条件隐藏设备编号 将原设备编号改为设备编号
+      this.listConfig.searchForm.forms =
+        this.listConfig.searchForm.forms.filter(
+          (i) => i.slotName !== 'nowNumber'
+        )
+      this.listConfig.searchForm.forms.find(
+        (i) => i.slotName === 'preNumber'
+      ).label = '设备编号'
+    }
+    if (hasFuZeRenDianHua) {
+      this.hasFuZeRenDianHua = hasFuZeRenDianHua
+    }
+    if (hasChangJiaLianXiRen) {
+      this.hasChangJiaLianXiRen = hasChangJiaLianXiRen
+    }
+    if (tabList) {
+      console.debug('tabList', tabList)
+      this.tabList = tabList
+    }
+    this.getDatas()
+  },
+  methods: {
+    ImageAllUrl(row) {
+      if (row && row.buMen) {
+        const imgId = row.buMen.split(',')
+        return imgId.map((item) => getImage(item))
       }
+      return []
     },
-    async mounted() {
-      const {
-        stateList,
-        hideSysDeviceNo,
-        tabList,
-        hasDeviceRole,
-        typeList,
-        hasFuZeRenDianHua,
-        hasChangJiaLianXiRen
-      } = (await getSetting('device')) || {}
-      const { tagData, tagName } = (await getSetting('deviceTag')) || {}
-      if (tagName) {
-        console.debug('tagName', tagName)
-        this.tagName = tagName
-        this.tagData = tagData
+    ImageUrl(row) {
+      if (row && row.buMen) {
+        const imgId = row.buMen.split(',')[0]
+        return getImage(imgId)
       }
-      if (hasDeviceRole) {
-        console.debug('hasDeviceRole', hasDeviceRole)
-        const { role, isSuper } = this.$store.getters || {}
-        this.hasRole =
-          isSuper || role.some((r) => hasDeviceRole.includes(r.alias))
+      return ''
+    },
+    async getDatas() {
+      this.loading = true
+      const parameters = {
+        relation: 'AND',
+        parameters: []
       }
-      if (stateList) {
-        console.debug('stateList', stateList)
-        this.stateList = stateList
+      // 增加地点过滤
+      const obj = { relation: 'AND', parameters: [] }
+      obj.parameters.push({
+        key: 'Q^di_dian_^S',
+        value: this.level,
+        param: this.$utils.guid()
+      })
+      parameters.parameters.push(obj)
+
+      //设备管理组组长能看到所有设备,其他人仅能查看所在专业组的设备
+      const userRoleList = this.$store.getters.userInfo.role
+      let flag = true
+      userRoleList.forEach((item) => {
+        if (item.alias === 'xtgljs' || item.alias === 'sbglxzfzr') {
+          //设备管理组组长、系统管理员
+          flag = false
+        }
+      })
+      const bumen = this.$store.getters.userInfo.employee.positions
+     if(flag){ //增加部门过滤条件
+        //const bumen = this.$store.getters.userInfo
+        this.search.pos = bumen
+        this.showDeptSeach = false
+     }
+
+      // 部门搜索(可多选)
+      if (this.search.pos) {
+        const obj = { relation: 'OR', parameters: [] }
+        this.search.pos.split(',').forEach((item) => {
+          obj.parameters.push({
+            key: 'Q^bian_zhi_bu_men_^S',
+            value: item,
+            param: this.$utils.guid()
+          })
+        })
+        parameters.parameters.push(obj)
       }
-      if (typeList) {
-        console.debug('typeList', typeList)
-        this.typeList = typeList
+      // 建档时间搜索
+      if (this.search.time && this.search.time.length === 2) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^bian_zhi_shi_jian^DL^yyyy-MM-dd',
+          value: this.search.time[0],
+          param: this.$utils.guid()
+        })
+        obj.parameters.push({
+          key: 'Q^bian_zhi_shi_jian^DG^yyyy-MM-dd',
+          value: this.search.time[1],
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
       }
-      if (hideSysDeviceNo) {
-        this.hideSysDeviceNo = hideSysDeviceNo
-        // 列表隐藏设备编号 将原设备编号改为设备编号
-        this.listConfig.columns = this.listConfig.columns.filter(
-          (i) => i.prop !== 'sheBeiShiBieH'
-        )
-        this.listConfig.columns.find((i) => i.prop === 'yuanSheBeiBian').label =
-          '设备编号'
-        // 查询条件隐藏设备编号 将原设备编号改为设备编号
-        this.listConfig.searchForm.forms =
-          this.listConfig.searchForm.forms.filter(
-            (i) => i.slotName !== 'nowNumber'
-          )
-        this.listConfig.searchForm.forms.find(
-          (i) => i.slotName === 'preNumber'
-        ).label = '设备编号'
+      if (this.search.validity && this.search.validity.length === 2) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^xiao_zhun_you_xia^DL^yyyy-MM-dd',
+          value: this.search.validity[0],
+          param: this.$utils.guid()
+        })
+        obj.parameters.push({
+          key: 'Q^xiao_zhun_you_xia^DG^yyyy-MM-dd',
+          value: this.search.validity[1],
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
       }
-      if (hasFuZeRenDianHua) {
-        this.hasFuZeRenDianHua = hasFuZeRenDianHua
+      // 设备编号搜索
+      if (this.search.nowNumber) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^she_bei_shi_bie_h^SL',
+          value: this.search.nowNumber,
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
       }
-      if (hasChangJiaLianXiRen) {
-        this.hasChangJiaLianXiRen = hasChangJiaLianXiRen
+      // 原设备编号搜索
+      if (this.search.preNumber) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^yuan_she_bei_bian^SL',
+          value: this.search.preNumber,
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
       }
-      if (tabList) {
-        console.debug('tabList', tabList)
-        this.tabList = tabList
+      // 设备名称搜索
+      if (this.search.deviceName) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^she_bei_ming_cheng_^SL',
+          value: this.search.deviceName,
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
       }
-      this.getDatas()
-    },
-    methods: {
-      ImageAllUrl(row) {
-        if (row && row.buMen) {
-          const imgId = row.buMen.split(',')
-          return imgId.map((item) => getImage(item))
-        }
-        return []
-      },
-      ImageUrl(row) {
-        if (row && row.buMen) {
-          const imgId = row.buMen.split(',')[0]
-          return getImage(imgId)
-        }
-        return ''
-      },
-      async getDatas() {
-        this.loading = true
-        const parameters = {
-          relation: 'AND',
-          parameters: []
-        }
-        // 增加地点过滤
+      // 设备类型搜索
+      if (this.search.deviceType) {
         const obj = { relation: 'AND', parameters: [] }
         obj.parameters.push({
-          key: 'Q^di_dian_^S',
-          value: this.level,
+          key: 'Q^she_bei_lei_xing_^S',
+          value: this.search.deviceType,
           param: this.$utils.guid()
         })
         parameters.parameters.push(obj)
-  
-        // 部门搜索(可多选)
-        if (this.search.pos) {
-          const obj = { relation: 'OR', parameters: [] }
-          this.search.pos.split(',').forEach((item) => {
-            obj.parameters.push({
-              key: 'Q^bian_zhi_bu_men_^S',
-              value: item,
-              param: this.$utils.guid()
-            })
-          })
-          parameters.parameters.push(obj)
-        }
-        // 建档时间搜索
-        if (this.search.time && this.search.time.length === 2) {
-          const obj = { relation: 'AND', parameters: [] }
-          obj.parameters.push({
-            key: 'Q^bian_zhi_shi_jian^DL^yyyy-MM-dd',
-            value: this.search.time[0],
-            param: this.$utils.guid()
-          })
-          obj.parameters.push({
-            key: 'Q^bian_zhi_shi_jian^DG^yyyy-MM-dd',
-            value: this.search.time[1],
-            param: this.$utils.guid()
-          })
-          parameters.parameters.push(obj)
-        }
-        if (this.search.validity && this.search.validity.length === 2) {
-          const obj = { relation: 'AND', parameters: [] }
-          obj.parameters.push({
-            key: 'Q^xiao_zhun_you_xia^DL^yyyy-MM-dd',
-            value: this.search.validity[0],
-            param: this.$utils.guid()
-          })
-          obj.parameters.push({
-            key: 'Q^xiao_zhun_you_xia^DG^yyyy-MM-dd',
-            value: this.search.validity[1],
-            param: this.$utils.guid()
-          })
-          parameters.parameters.push(obj)
-        }
-        // 设备编号搜索
-        if (this.search.nowNumber) {
-          const obj = { relation: 'AND', parameters: [] }
+      }
+      // 设备状态搜索
+      if (this.search.deviceStatus) {
+        const obj = { relation: 'AND', parameters: [] }
+        obj.parameters.push({
+          key: 'Q^she_bei_zhuang_ta^S',
+          value: this.search.deviceStatus,
+          param: this.$utils.guid()
+        })
+        parameters.parameters.push(obj)
+      }
+      // 放置地点搜索
+      // if (this.search.place) {
+      //     const obj = { relation: 'AND', parameters: [] }
+      //     obj.parameters.push({ key: 'Q^cun_fang_di_dian_^SL', value: this.search.place, param: this.$utils.guid() })
+      //     parameters.parameters.push(obj)
+      // }
+      if (this.search.place) {
+        const obj = { relation: 'OR', parameters: [] }
+        this.search.place.split(',').forEach((item) => {
           obj.parameters.push({
-            key: 'Q^she_bei_shi_bie_h^SL',
-            value: this.search.nowNumber,
+            key: 'Q^cun_fang_wei_zhi_^S',
+            value: item,
             param: this.$utils.guid()
           })
-          parameters.parameters.push(obj)
-        }
-        // 原设备编号搜索
-        if (this.search.preNumber) {
-          const obj = { relation: 'AND', parameters: [] }
+        })
+        parameters.parameters.push(obj)
+      }
+      // 保管人搜索(可多选)
+      if (this.search.managePeople) {
+        const obj = { relation: 'OR', parameters: [] }
+        this.search.managePeople.split(',').forEach((item) => {
           obj.parameters.push({
-            key: 'Q^yuan_she_bei_bian^SL',
-            value: this.search.preNumber,
+            key: 'Q^guan_li_ren_^S',
+            value: item,
             param: this.$utils.guid()
           })
-          parameters.parameters.push(obj)
-        }
-        // 设备名称搜索
-        if (this.search.deviceName) {
-          const obj = { relation: 'AND', parameters: [] }
+        })
+        parameters.parameters.push(obj)
+      }
+      // 岗位/分组搜索(可多选)
+      if (this.search.deviceClass) {
+        const obj = { relation: 'OR', parameters: [] }
+        this.search.deviceClass.split(',').forEach((item) => {
           obj.parameters.push({
-            key: 'Q^she_bei_ming_cheng_^SL',
-            value: this.search.deviceName,
+            key: 'Q^wei_hu_fang_shi_^SL',
+            value: item,
             param: this.$utils.guid()
           })
-          parameters.parameters.push(obj)
+        })
+        parameters.parameters.push(obj)
+      }
+      const params = {
+        requestPage: {
+          pageNo: this.pagination.page,
+          limit: this.pagination.limit
+        },
+        sorts: this.sorts
+      }
+      if (parameters.parameters.length > 0) {
+        params.parameters = [parameters]
+      }
+
+      const {
+        data: { dataResult, pageResult }
+      } = await queryequipmentCard(params)
+
+      this.bianlistData.pageResult = pageResult
+      this.bianlistData.dataResult = dataResult
+      ActionUtils.handleListData(this, this.bianlistData) // 调用内置方法
+      this.loading = false
+    },
+    // 查看表单
+    goLookForm(row) {
+      const { first, second } = this.$store.getters.level || {}
+      const didian = second || first
+      this.srcUrl =
+        this.$reportPath.replace('show', 'pdf') +
+        '设备/设备档案卡.rpx&id_=' +
+        row.id +
+        '&org_=' +
+        first +
+        '&second_=' +
+        didian
+      this.iframeVisible = true
+    },
+    // 按钮事件处理
+    handleAction(command, position, selection, data, index, button) {
+      switch (command) {
+        case 'search': // 查询
+            this.getDatas()
+          break
+        case 'customAdd':
+          this.handleCustomAdd()
+          break
+        case 'customSetting':
+          this.handleCustomSetting()
+          break
+        case 'customRemove':
+          this.handleCustomRemove(selection)
+          break
+        case 'customExport':
+          this.handleCustomExport(selection, data)
+          break
+        case 'customImport':
+          this.handleCustomImport()
+          break
+        case 'customBpm':
+          this.handleCustomBpm()
+          break
+        case 'customPrint':
+          this.handleCustomPrint(selection)
+          break
+        default:
+          break
+      }
+    },
+    // 打印标签
+    handleCustomPrint(selection = []) {
+      if (selection.length === 0) {
+        return this.$message.warning('请先选择需要打印标签的数据!')
+      }
+      this.printObj = selection
+      this.printVisible = true
+    },
+    // 关闭标签
+    scanOff() {
+      this.printVisible = false
+    },
+    // 设备台账
+    handleCustomBpm() {
+      this.npmDialogFormVisible = true
+    },
+    // 处理分页事件
+    async handlePaginationChange(page) {
+      ActionUtils.setPagination(this.pagination, page)
+      this.getDatas()
+    },
+    // 处理排序
+    handleSortChange(sort) {
+      function removeUnderscores(str) {
+        return str.replace(/^_+|_+$/g, '')
+      }
+      const { order, sortBy } = sort
+      let s = ''
+      switch (sortBy) {
+        case 'BIAN_ZHI_SHI_JIAN_':
+        case 'SHE_BEI_SHI_BIE_H_':
+        case 'YUAN_SHE_BEI_BIAN_':
+        case 'SHE_BEI_ZHUANG_TA_':
+          s = removeUnderscores(sortBy)
+          break
+        default:
+          s = sortBy
+      }
+      let o = null
+      if (order === 'descending') {
+        o = 'desc'
+      } else if (order === 'ascending') {
+        o = 'asc'
+      }
+      this.sorts = [{ field: s, order: o }]
+      this.getDatas()
+    },
+    handleCustomAdd() {
+      this.params = {}
+      this.deviceDialogShow = true
+    },
+    close() {
+      this.deviceDialogShow = false
+      this.getDatas()
+    },
+    goEdit(row) {
+      this.params = row
+      this.deviceDialogShow = true
+    },
+    handleCustomSetting() {
+      this.customDialogVisible = true
+    },
+    handleCustomRemove(selection) {
+      if (!this.hasRole) return
+      console.log('selection', selection)
+      if (!selection || selection.length === 0) {
+        return this.$message.warning('请选择要删除的数据!')
+      }
+      this.$confirm(
+        `此操作将永久删除已选中的${selection.length}条数据, 是否确定? `,
+        '提示',
+        {
+          confirmButtonText: '继续',
+          cancelButtonText: '取消',
+          type: 'warning'
         }
-        // 设备类型搜索
-        if (this.search.deviceType) {
-          const obj = { relation: 'AND', parameters: [] }
-          obj.parameters.push({
-            key: 'Q^she_bei_lei_xing_^S',
-            value: this.search.deviceType,
-            param: this.$utils.guid()
+      )
+        .then(async () => {
+          await removeEquipmentCard({
+            ids: selection + ''
           })
-          parameters.parameters.push(obj)
-        }
-        // 设备状态搜索
-        if (this.search.deviceStatus) {
-          const obj = { relation: 'AND', parameters: [] }
-          obj.parameters.push({
-            key: 'Q^she_bei_zhuang_ta^S',
-            value: this.search.deviceStatus,
-            param: this.$utils.guid()
-          })
-          parameters.parameters.push(obj)
-        }
-        // 放置地点搜索
-        // if (this.search.place) {
-        //     const obj = { relation: 'AND', parameters: [] }
-        //     obj.parameters.push({ key: 'Q^cun_fang_di_dian_^SL', value: this.search.place, param: this.$utils.guid() })
-        //     parameters.parameters.push(obj)
-        // }
-        if (this.search.place) {
-          const obj = { relation: 'OR', parameters: [] }
-          this.search.place.split(',').forEach((item) => {
-            obj.parameters.push({
-              key: 'Q^cun_fang_wei_zhi_^S',
-              value: item,
-              param: this.$utils.guid()
-            })
-          })
-          parameters.parameters.push(obj)
-        }
-        // 保管人搜索(可多选)
-        if (this.search.managePeople) {
-          const obj = { relation: 'OR', parameters: [] }
-          this.search.managePeople.split(',').forEach((item) => {
-            obj.parameters.push({
-              key: 'Q^guan_li_ren_^S',
-              value: item,
-              param: this.$utils.guid()
-            })
-          })
-          parameters.parameters.push(obj)
-        }
-        // 岗位/分组搜索(可多选)
-        if (this.search.deviceClass) {
-          const obj = { relation: 'OR', parameters: [] }
-          this.search.deviceClass.split(',').forEach((item) => {
-            obj.parameters.push({
-              key: 'Q^wei_hu_fang_shi_^SL',
-              value: item,
-              param: this.$utils.guid()
-            })
-          })
-          parameters.parameters.push(obj)
-        }
-        const params = {
-          requestPage: {
-            pageNo: this.pagination.page,
-            limit: this.pagination.limit
-          },
-          sorts: this.sorts
-        }
-        if (parameters.parameters.length > 0) {
-          params.parameters = [parameters]
-        }
-  
-        const {
-          data: { dataResult, pageResult }
-        } = await queryequipmentCard(params)
-  
-        this.bianlistData.pageResult = pageResult
-        this.bianlistData.dataResult = dataResult
-        ActionUtils.handleListData(this, this.bianlistData) // 调用内置方法
-        this.loading = false
-      },
-      // 查看表单
-      goLookForm(row) {
-        const { first, second } = this.$store.getters.level || {}
-        const didian = second || first
-        this.srcUrl =
-          this.$reportPath.replace('show', 'pdf') +
-          '设备/设备档案卡.rpx&id_=' +
-          row.id +
-          '&org_=' +
-          first +
-          '&second_=' +
-          didian
-        this.iframeVisible = true
-      },
-      // 按钮事件处理
-      handleAction(command, position, selection, data, index, button) {
-        switch (command) {
-          case 'search': // 查询
-            this.getDatas()
-            break
-          case 'customAdd':
-            this.handleCustomAdd()
-            break
-          case 'customSetting':
-            this.handleCustomSetting()
-            break
-          case 'customRemove':
-            this.handleCustomRemove(selection)
-            break
-          case 'customExport':
-            this.handleCustomExport(selection, data)
-            break
-          case 'customImport':
-            this.handleCustomImport()
-            break
-          case 'customBpm':
-            this.handleCustomBpm()
-            break
-          case 'customPrint':
-            this.handleCustomPrint(selection)
-            break
-          default:
-            break
-        }
-      },
-      // 打印标签
-      handleCustomPrint(selection = []) {
-        if (selection.length === 0) {
-          return this.$message.warning('请先选择需要打印标签的数据!')
-        }
-        this.printObj = selection
-        this.printVisible = true
-      },
-      // 关闭标签
-      scanOff() {
-        this.printVisible = false
-      },
-      // 设备台账
-      handleCustomBpm() {
-        this.npmDialogFormVisible = true
-      },
-      // 处理分页事件
-      async handlePaginationChange(page) {
-        ActionUtils.setPagination(this.pagination, page)
-        this.getDatas()
-      },
-      // 处理排序
-      handleSortChange(sort) {
-        function removeUnderscores(str) {
-          return str.replace(/^_+|_+$/g, '')
-        }
-        const { order, sortBy } = sort
-        let s = ''
-        switch (sortBy) {
-          case 'BIAN_ZHI_SHI_JIAN_':
-          case 'SHE_BEI_SHI_BIE_H_':
-          case 'YUAN_SHE_BEI_BIAN_':
-          case 'SHE_BEI_ZHUANG_TA_':
-            s = removeUnderscores(sortBy)
-            break
-          default:
-            s = sortBy
-        }
-        let o = null
-        if (order === 'descending') {
-          o = 'desc'
-        } else if (order === 'ascending') {
-          o = 'asc'
-        }
-        this.sorts = [{ field: s, order: o }]
-        this.getDatas()
-      },
-      handleCustomAdd() {
-        this.params = {}
-        this.deviceDialogShow = true
-      },
-      close() {
-        this.deviceDialogShow = false
-        this.getDatas()
-      },
-      goEdit(row) {
-        this.params = row
-        this.deviceDialogShow = true
-      },
-      handleCustomSetting() {
-        this.customDialogVisible = true
-      },
-      handleCustomRemove(selection) {
-        if (!this.hasRole) return
-        console.log('selection', selection)
-        if (!selection || selection.length === 0) {
-          return this.$message.warning('请选择要删除的数据!')
-        }
-        this.$confirm(
-          `此操作将永久删除已选中的${selection.length}条数据, 是否确定? `,
-          '提示',
-          {
-            confirmButtonText: '继续',
-            cancelButtonText: '取消',
-            type: 'warning'
+          // 删除后刷新
+          await this.getDatas()
+          this.$message.success('删除成功!')
+        })
+        .catch(() => {})
+    },
+    // 导出
+    handleCustomExport(selection, data) {
+      this.$confirm('请选择导出的类型', '提示', {
+        confirmButtonText: '导出设备',
+        cancelButtonText: '导出维护项目',
+        closeOnClickModal: false,
+        closeOnPressEscape: false,
+        distinguishCancelAndClose: true,
+        type: 'info'
+      })
+        .then(() => {
+          this.ExportDevice(selection, data)
+        })
+        .catch((action) => {
+          if (action === 'close') return
+          if (action === 'cancel') {
+            this.ExportProject(selection, data)
           }
-        )
-          .then(async () => {
-            await removeEquipmentCard({
-              ids: selection + ''
-            })
-            // 删除后刷新
-            await this.getDatas()
-            this.$message.success('删除成功!')
-          })
-          .catch(() => {})
-      },
-      // 导出
-      handleCustomExport(selection, data) {
-        this.$confirm('请选择导出的类型', '提示', {
-          confirmButtonText: '导出设备',
-          cancelButtonText: '导出维护项目',
-          closeOnClickModal: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: true,
-          type: 'info'
         })
-          .then(() => {
-            this.ExportDevice(selection, data)
-          })
-          .catch((action) => {
-            if (action === 'close') return
-            if (action === 'cancel') {
-              this.ExportProject(selection, data)
-            }
-          })
-      },
-      // 导入
-      handleCustomImport() {
-        this.$confirm('确请选择导入的类型', '提示', {
-          confirmButtonText: '导入设备',
-          cancelButtonText: '导入维护项目',
-          closeOnClickModal: false,
-          closeOnPressEscape: false,
-          distinguishCancelAndClose: true,
-          type: 'info'
+    },
+    // 导入
+    handleCustomImport() {
+      this.$confirm('确请选择导入的类型', '提示', {
+        confirmButtonText: '导入设备',
+        cancelButtonText: '导入维护项目',
+        closeOnClickModal: false,
+        closeOnPressEscape: false,
+        distinguishCancelAndClose: true,
+        type: 'info'
+      })
+        .then(() => {
+          this.ImportDevice()
         })
-          .then(() => {
-            this.ImportDevice()
-          })
-          .catch((action) => {
-            if (action === 'close') return
-            if (action === 'cancel') {
-              this.$confirm('请选择设备维护项目导入类型', '提示', {
-                confirmButtonText: '增量添加',
-                cancelButtonText: '全量替换',
-                closeOnClickModal: false,
-                closeOnPressEscape: false,
-                distinguishCancelAndClose: true,
-                type: 'info'
+        .catch((action) => {
+          if (action === 'close') return
+          if (action === 'cancel') {
+            this.$confirm('请选择设备维护项目导入类型', '提示', {
+              confirmButtonText: '增量添加',
+              cancelButtonText: '全量替换',
+              closeOnClickModal: false,
+              closeOnPressEscape: false,
+              distinguishCancelAndClose: true,
+              type: 'info'
+            })
+              .then(() => {
+                this.ImportDeviceType = '增量添加'
+                this.ImportProject()
               })
-                .then(() => {
-                  this.ImportDeviceType = '增量添加'
+              .catch((action) => {
+                if (action === 'close') return
+                if (action === 'cancel') {
+                  this.ImportDeviceType = '全量替换'
                   this.ImportProject()
-                })
-                .catch((action) => {
-                  if (action === 'close') return
-                  if (action === 'cancel') {
-                    this.ImportDeviceType = '全量替换'
-                    this.ImportProject()
-                  }
-                })
-            }
-          })
-      },
-      // 导入设备
-      ImportDevice() {
-        this.$refs.file1.click()
-        console.log('导入设备')
-      },
-      // 导入维护项目
-      ImportProject() {
-        this.$refs.file2.click()
-        console.log('导入维护项目')
-      },
-      getTimeStamp() {
-        return dayjs().format('YYYYMMDDHHmmss')
-      },
-      xlsx(json, fields, filename = '.xlsx') {
-        // 导出xlsx
-        json.forEach((item) => {
-          for (const i in item) {
-            if (fields.hasOwnProperty(i)) {
-              item[fields[i]] = item[i]
-            }
-            delete item[i] // 删除原先的对象属性
+                }
+              })
           }
         })
-        const sheetName = filename // excel的文件名称
-        const wb = xlsx.utils.book_new() // 工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
-        const ws = xlsx.utils.json_to_sheet(json, {
-          header: Object.values(fields)
-        }) // 将JS对象数组转换为工作表。
-        wb.SheetNames.push(sheetName)
-        wb.Sheets[sheetName] = ws
-        const defaultCellStyle = {
-          font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },
-          fill: { fgColor: { rgb: 'FFFFAA00' } }
-        } // 设置表格的样式
-        const wopts = {
-          bookType: 'xlsx',
-          bookSST: false,
-          type: 'binary',
-          cellStyles: true,
-          defaultCellStyle: defaultCellStyle,
-          showGridLines: false
-        } // 写入的样式
-        const wbout = xlsx.write(wb, wopts)
-        const blob = new Blob([this.s2ab(wbout)], {
-          type: 'application/octet-stream'
-        })
-        fs.saveAs(blob, filename + '.xlsx')
-      },
-      s2ab(s) {
-        let buf
-        if (typeof ArrayBuffer !== 'undefined') {
-          buf = new ArrayBuffer(s.length)
-          const view = new Uint8Array(buf)
-          for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
-          return buf
-        } else {
-          buf = new Array(s.length)
-          for (let i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff
-          return buf
+    },
+    // 导入设备
+    ImportDevice() {
+      this.$refs.file1.click()
+      console.log('导入设备')
+    },
+    // 导入维护项目
+    ImportProject() {
+      this.$refs.file2.click()
+      console.log('导入维护项目')
+    },
+    getTimeStamp() {
+      return dayjs().format('YYYYMMDDHHmmss')
+    },
+    xlsx(json, fields, filename = '.xlsx') {
+      // 导出xlsx
+      json.forEach((item) => {
+        for (const i in item) {
+          if (fields.hasOwnProperty(i)) {
+            item[fields[i]] = item[i]
+          }
+          delete item[i] // 删除原先的对象属性
         }
-      },
-      async switchExportData(data) {
-        // const deviceGroupSql = `select id_, wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ = '${second || first}'` // 岗位/分组信息
-        // const supplierSql = `select id_, gong_ying_shang_m from t_gysxxb where di_dian_ = '${second || first}'` // 供应商信息
-        const { first, second } = this.$store.getters.level || {}
-        const {
-          variables: { data: deviceGroupData }
-        } = await this.$common.request('query', {
-          key: this.config ? 'gwzzzha' : 'getPositionList',
-          params: [second || first]
-        })
+      })
+      const sheetName = filename // excel的文件名称
+      const wb = xlsx.utils.book_new() // 工作簿对象包含一SheetNames数组,以及一个表对象映射表名称到表对象。XLSX.utils.book_new实用函数创建一个新的工作簿对象。
+      const ws = xlsx.utils.json_to_sheet(json, {
+        header: Object.values(fields)
+      }) // 将JS对象数组转换为工作表。
+      wb.SheetNames.push(sheetName)
+      wb.Sheets[sheetName] = ws
+      const defaultCellStyle = {
+        font: { name: 'Verdana', sz: 13, color: 'FF00FF88' },
+        fill: { fgColor: { rgb: 'FFFFAA00' } }
+      } // 设置表格的样式
+      const wopts = {
+        bookType: 'xlsx',
+        bookSST: false,
+        type: 'binary',
+        cellStyles: true,
+        defaultCellStyle: defaultCellStyle,
+        showGridLines: false
+      } // 写入的样式
+      const wbout = xlsx.write(wb, wopts)
+      const blob = new Blob([this.s2ab(wbout)], {
+        type: 'application/octet-stream'
+      })
+      fs.saveAs(blob, filename + '.xlsx')
+    },
+    s2ab(s) {
+      let buf
+      if (typeof ArrayBuffer !== 'undefined') {
+        buf = new ArrayBuffer(s.length)
+        const view = new Uint8Array(buf)
+        for (let i = 0; i !== s.length; ++i) view[i] = s.charCodeAt(i) & 0xff
+        return buf
+      } else {
+        buf = new Array(s.length)
+        for (let i = 0; i !== s.length; ++i) buf[i] = s.charCodeAt(i) & 0xff
+        return buf
+      }
+    },
+    async switchExportData(data) {
+      // const deviceGroupSql = `select id_, wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ = '${second || first}'` // 岗位/分组信息
+      // const supplierSql = `select id_, gong_ying_shang_m from t_gysxxb where di_dian_ = '${second || first}'` // 供应商信息
+      const { first, second } = this.$store.getters.level || {}
+      const {
+        variables: { data: deviceGroupData }
+      } = await this.$common.request('query', {
+        key: this.config ? 'gwzzzha' : 'getPositionList',
+        params: [second || first]
+      })
+      const {
+        variables: { data: gysData }
+      } = await this.$common.request('query', {
+        key: 'getSupplierList',
+        params: [second || first]
+      })
+      const exportData = JSON.parse(JSON.stringify(data))
+      for (let i = 0; i < exportData.length; i++) {
+        const item = exportData[i]
+        item.bianZhiBuMen = this.switchIdToDept(item.bianZhiBuMen.split(',')[0])
+        item.guanLiRen = this.switchIdToUserName(item.guanLiRen.split(',')[0])
+        // item.biXuDeHuanJin = this.switchIdToUserName(item.biXuDeHuanJin.split(',')[0])
+        item.weiHuFangShi = this.switchDeviceIdToName(
+          item.weiHuFangShi,
+          deviceGroupData
+        )
+        item.shiYongKeShi = this.switchGYSIdToName(item.shiYongKeShi, gysData)
+        if (this.stateList[item.sheBeiZhuangTa]) {
+          item.sheBeiZhuangTa = this.stateList[item.sheBeiZhuangTa]
+        }
+        if (this.typeList[item.sheBeiLeiXing]) {
+          item.sheBeiLeiXing = this.typeList[item.sheBeiLeiXing]
+        }
+      }
+      return exportData
+    },
+    // 岗位/分组id 转 岗位/分组名称
+    switchDeviceIdToName(val, deviceGroupList) {
+      const result = []
+      const valList = val?.split(',') || []
+      valList.forEach((item) =>
+        result.push(
+          deviceGroupList?.find((i) => i.positionId === item)?.positionName ||
+            ''
+        )
+      )
+      return result.join(',')
+    },
+    // 供应商id 转 供应商名称 检定/校准单位
+    switchGYSIdToName(val, gysList) {
+      const result =
+        gysList.find((item) => item.id_ === val)?.gong_ying_shang_m || ''
+      return result
+    },
+    // 部门id 转 部门名称
+    switchIdToDept(id) {
+      const { deptList } = this.$store.getters
+      const temp = deptList.find((item) => item.positionId === id)
+      return temp ? temp.positionName : ''
+    },
+    // 部门名称 转 部门id
+    switchDeptToId(dep) {
+      const { deptList } = this.$store.getters
+      const temp = deptList.find((item) => item.positionName === dep)
+      return temp ? temp.positionId : ''
+    },
+    // 人员id 转人员名称
+    switchIdToUserName(id) {
+      const { userList } = this.$store.getters
+      const temp = userList.find((item) => item.userId === id)
+      return temp ? temp.userName : ''
+    },
+    // 人员名称 转 人员id
+    switchUserNameToId(name) {
+      const { userList } = this.$store.getters
+      const temp = userList.find((item) => item.userName === name)
+      return temp ? temp.userId : ''
+    },
+    // 导出设备
+    async ExportDevice(selection, data = []) {
+      const exportData = await this.switchExportData(data)
+      this.xlsx(
+        exportData,
+        this.deviceColumns,
+        '设备档案卡基本数据' + this.getTimeStamp()
+      )
+      this.$message.success('导出设备成功!')
+    },
+    // 导出维护项目
+    async ExportProject(selection = []) {
+      let exportData = []
+      console.log('导出维护项目')
+      if (selection.length > 0) {
+        // const sql = `select b.yuan_she_bei_bian as yuanSheBeiBian,b.she_bei_ming_cheng_ as sheBeiMingCheng,a.parent_id_,a.wei_hu_xiang_mu_c as weiHuXiangMuC,a.wei_hu_ri_qi_ as weiHuRiQi,a.wei_hu_lei_xing_ as weiHuLeiXing,a.ri_qi_shu_zi_ as riQiShuZi from t_whzqjxm a,t_sbdj b where a.parent_id_=b.id_ and find_in_set(a.parent_id_, '${selection.join(',')}')`
         const {
-          variables: { data: gysData }
+          variables: { data }
         } = await this.$common.request('query', {
-          key: 'getSupplierList',
-          params: [second || first]
+          key: 'getDeviceProject',
+          params: [selection.join(',')]
         })
-        const exportData = JSON.parse(JSON.stringify(data))
-        for (let i = 0; i < exportData.length; i++) {
-          const item = exportData[i]
-          item.bianZhiBuMen = this.switchIdToDept(item.bianZhiBuMen.split(',')[0])
-          item.guanLiRen = this.switchIdToUserName(item.guanLiRen.split(',')[0])
-          // item.biXuDeHuanJin = this.switchIdToUserName(item.biXuDeHuanJin.split(',')[0])
-          item.weiHuFangShi = this.switchDeviceIdToName(
-            item.weiHuFangShi,
-            deviceGroupData
-          )
-          item.shiYongKeShi = this.switchGYSIdToName(item.shiYongKeShi, gysData)
-          if (this.stateList[item.sheBeiZhuangTa]) {
-            item.sheBeiZhuangTa = this.stateList[item.sheBeiZhuangTa]
-          }
-          if (this.typeList[item.sheBeiLeiXing]) {
-            item.sheBeiLeiXing = this.typeList[item.sheBeiLeiXing]
-          }
-        }
-        return exportData
-      },
-      // 岗位/分组id 转 岗位/分组名称
-      switchDeviceIdToName(val, deviceGroupList) {
-        const result = []
-        const valList = val?.split(',') || []
-        valList.forEach((item) =>
-          result.push(
-            deviceGroupList?.find((i) => i.positionId === item)?.positionName ||
-              ''
-          )
-        )
-        return result.join(',')
-      },
-      // 供应商id 转 供应商名称 检定/校准单位
-      switchGYSIdToName(val, gysList) {
-        const result =
-          gysList.find((item) => item.id_ === val)?.gong_ying_shang_m || ''
-        return result
-      },
-      // 部门id 转 部门名称
-      switchIdToDept(id) {
-        const { deptList } = this.$store.getters
-        const temp = deptList.find((item) => item.positionId === id)
-        return temp ? temp.positionName : ''
-      },
-      // 部门名称 转 部门id
-      switchDeptToId(dep) {
-        const { deptList } = this.$store.getters
-        const temp = deptList.find((item) => item.positionName === dep)
-        return temp ? temp.positionId : ''
-      },
-      // 人员id 转人员名称
-      switchIdToUserName(id) {
-        const { userList } = this.$store.getters
-        const temp = userList.find((item) => item.userId === id)
-        return temp ? temp.userName : ''
-      },
-      // 人员名称 转 人员id
-      switchUserNameToId(name) {
-        const { userList } = this.$store.getters
-        const temp = userList.find((item) => item.userName === name)
-        return temp ? temp.userId : ''
-      },
-      // 导出设备
-      async ExportDevice(selection, data = []) {
-        const exportData = await this.switchExportData(data)
+        exportData = data
         this.xlsx(
           exportData,
-          this.deviceColumns,
-          '设备档案卡基本数据' + this.getTimeStamp()
+          this.projectColums,
+          '设备维护项目数据' + this.getTimeStamp()
         )
-        this.$message.success('导出设备成功!')
-      },
-      // 导出维护项目
-      async ExportProject(selection = []) {
-        let exportData = []
-        console.log('导出维护项目')
-        if (selection.length > 0) {
-          // const sql = `select b.yuan_she_bei_bian as yuanSheBeiBian,b.she_bei_ming_cheng_ as sheBeiMingCheng,a.parent_id_,a.wei_hu_xiang_mu_c as weiHuXiangMuC,a.wei_hu_ri_qi_ as weiHuRiQi,a.wei_hu_lei_xing_ as weiHuLeiXing,a.ri_qi_shu_zi_ as riQiShuZi from t_whzqjxm a,t_sbdj b where a.parent_id_=b.id_ and find_in_set(a.parent_id_, '${selection.join(',')}')`
-          const {
-            variables: { data }
-          } = await this.$common.request('query', {
-            key: 'getDeviceProject',
-            params: [selection.join(',')]
-          })
-          exportData = data
+      } else {
+        const attachmentId = 'device_maintainProject'
+        const res = await download({ attachmentId })
+        // 判断 ArrayBuffer 的大小,主要用于兼容没有文件的情况
+        if (res.data?.byteLength === 0) {
           this.xlsx(
-            exportData,
+            [],
             this.projectColums,
-            '设备维护项目数据' + this.getTimeStamp()
+            '设备维护项目模板' + this.getTimeStamp()
           )
         } else {
-          const attachmentId = 'device_maintainProject'
-          const res = await download({ attachmentId })
-          // 判断 ArrayBuffer 的大小,主要用于兼容没有文件的情况
-          if (res.data?.byteLength === 0) {
-            this.xlsx(
-              [],
-              this.projectColums,
-              '设备维护项目模板' + this.getTimeStamp()
-            )
+          // const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
+          const a = document.createElement('a')
+          a.style.display = 'none'
+          // a.href = URL.createObjectURL(blob)
+          a.href = res.request.responseURL
+          // a.download = '设备维护项目导入模板'
+          document.body.appendChild(a)
+          a.click()
+          document.body.removeChild(a)
+        }
+      }
+      this.$message.success('导出维护项目成功!')
+    },
+    // value 转 key
+    switchV2K(value, obj) {
+      const key = Object.keys(obj).find((key) => obj[key] === value)
+      return key || ''
+    },
+    // 转换对象的key
+    switchDeviceObj(data, originalObj) {
+      const result = []
+      // data.forEach(item => {
+      //     const obj = {}
+      //     for (const key in item) {
+      //         obj[this.switchV2K(key, originalObj)] = item[key]
+      //     }
+      //     result.push(obj)
+      // })
+      data.forEach((item) => {
+        const obj = {}
+        for (const key in originalObj) {
+          // 对日期格式的数据做兼容处理
+          if (item[originalObj[key]] instanceof Date) {
+            obj[key] =
+              dayjs(item[originalObj[key]])
+                .add(8, 'hour')
+                .format('YYYY-MM-DD') || ''
           } else {
-            // const blob = new Blob([res.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
-            const a = document.createElement('a')
-            a.style.display = 'none'
-            // a.href = URL.createObjectURL(blob)
-            a.href = res.request.responseURL
-            // a.download = '设备维护项目导入模板'
-            document.body.appendChild(a)
-            a.click()
-            document.body.removeChild(a)
+            obj[key] = String(item[originalObj[key]] || '')
           }
         }
-        this.$message.success('导出维护项目成功!')
-      },
-      // value 转 key
-      switchV2K(value, obj) {
-        const key = Object.keys(obj).find((key) => obj[key] === value)
-        return key || ''
-      },
-      // 转换对象的key
-      switchDeviceObj(data, originalObj) {
-        const result = []
-        // data.forEach(item => {
-        //     const obj = {}
-        //     for (const key in item) {
-        //         obj[this.switchV2K(key, originalObj)] = item[key]
-        //     }
-        //     result.push(obj)
-        // })
-        data.forEach((item) => {
-          const obj = {}
-          for (const key in originalObj) {
-            // 对日期格式的数据做兼容处理
-            if (item[originalObj[key]] instanceof Date) {
-              obj[key] =
-                dayjs(item[originalObj[key]])
-                  .add(8, 'hour')
-                  .format('YYYY-MM-DD') || ''
-            } else {
-              obj[key] = String(item[originalObj[key]] || '')
+        result.push(obj)
+      })
+      return result
+    },
+    /* 读取文件 将文件转换为二进制 */
+    readFile(file) {
+      return new Promise((resolve) => {
+        const reader = new FileReader()
+        reader.readAsBinaryString(file)
+        reader.onload = (ev) => {
+          resolve(ev.target.result)
+        }
+      })
+    },
+    checkDeviceRequiredFieldsIfEmpty(list, requiredMap) {
+      const msgList = []
+      list.forEach((item, index) => {
+        const invalidFieldNames = []
+        Object.entries(requiredMap).forEach(([field, name]) => {
+          if (item.weiHuLeiXing === '按需保养' && field === 'weiHuRiQi') {
+            console.log('按需pass1')
+          } else {
+            if (!item[field]) {
+              invalidFieldNames.push(name)
             }
           }
-          result.push(obj)
-        })
-        return result
-      },
-      /* 读取文件 将文件转换为二进制 */
-      readFile(file) {
-        return new Promise((resolve) => {
-          const reader = new FileReader()
-          reader.readAsBinaryString(file)
-          reader.onload = (ev) => {
-            resolve(ev.target.result)
-          }
         })
-      },
-      checkDeviceRequiredFieldsIfEmpty(list, requiredMap) {
-        const msgList = []
+        if (invalidFieldNames.length > 0) {
+          msgList.push({ row: index + 2, field: invalidFieldNames })
+        }
+      })
+      return msgList
+    },
+    /**
+     * 专门发送提示
+     * @param {*} allResult
+     * @returns
+     */
+    sendWarningMessages(allResult, mark = 'range') {
+      if (allResult.length < 1) {
+        return
+      }
+      console.log(
+        '%c Msg Obj %c',
+        'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
+        'background:transparent',
+        allResult
+      )
+      const item = allResult[0]
+      switch (mark) {
+        case 'required':
+          this.$message.warning(
+            `第${item.row}行,字段【${item.field.join(',')}】的值不能为空!`
+          )
+          break
+        case 'range':
+          this.$message.warning(
+            `第${item.row}行,字段【${item.field}】的值【${item.value}】不在限定范围内!`
+          )
+          break
+        case 'dateFormat':
+          this.$message.warning(
+            `第${item.row}行,字段【${item.field}】日期格式错误!格式支持【2024-01-01】、【2024/01/01】,请检查您的数据!`
+          )
+          break
+        case 'duplicateOriginalDevice':
+          this.$message.warning(`${item.field}!`)
+          break
+        default:
+          throw new Error(`${mark}类型未定义!`)
+      }
+    },
+    /**
+     * 根据规则校验字段的限定范围
+     * @param {*} list
+     */
+    checkFieldsRange(list, rules) {
+      const msgList = []
+      for (const ruleKey in rules) {
+        const rule = rules[ruleKey]
+        const fieldName = ruleKey
         list.forEach((item, index) => {
-          const invalidFieldNames = []
-          Object.entries(requiredMap).forEach(([field, name]) => {
-            if (item.weiHuLeiXing === '按需保养' && field === 'weiHuRiQi') {
-              console.log('按需pass1')
-            } else {
-              if (!item[field]) {
-                invalidFieldNames.push(name)
-              }
-            }
-          })
-          if (invalidFieldNames.length > 0) {
-            msgList.push({ row: index + 2, field: invalidFieldNames })
+          const fieldValue = item[rule.field]
+          if (fieldValue && !rule.range.includes(fieldValue)) {
+            msgList.push({
+              row: index + 2,
+              field: fieldName,
+              value: fieldValue
+            })
           }
         })
-        return msgList
-      },
-      /**
-       * 专门发送提示
-       * @param {*} allResult
-       * @returns
-       */
-      sendWarningMessages(allResult, mark = 'range') {
-        if (allResult.length < 1) {
-          return
-        }
-        console.log(
-          '%c Msg Obj %c',
-          'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
-          'background:transparent',
-          allResult
-        )
-        const item = allResult[0]
-        switch (mark) {
-          case 'required':
-            this.$message.warning(
-              `第${item.row}行,字段【${item.field.join(',')}】的值不能为空!`
-            )
-            break
-          case 'range':
-            this.$message.warning(
-              `第${item.row}行,字段【${item.field}】的值【${item.value}】不在限定范围内!`
-            )
-            break
-          case 'dateFormat':
-            this.$message.warning(
-              `第${item.row}行,字段【${item.field}】日期格式错误!格式支持【2024-01-01】、【2024/01/01】,请检查您的数据!`
-            )
-            break
-          case 'duplicateOriginalDevice':
-            this.$message.warning(`${item.field}!`)
-            break
-          default:
-            throw new Error(`${mark}类型未定义!`)
+      }
+      return msgList
+    },
+    /**
+     * 校验日期字段填写的格式
+     * @param {*} list
+     * @returns
+     */
+    checkDateFields(list) {
+      const dateRegex = /^(\d{4})[-/](0[1-9]|1[0-2])[-/](0[1-9]|[12]\d|3[01])$/
+      for (let i = 0; i < list.length; i++) {
+        const row = list[i]
+        for (const field in this.dateFieldsMap) {
+          if (row[field] && !dateRegex.test(row[field])) {
+            console.error('error field:', row[field])
+            return [{ row: i + 2, field: this.dateFieldsMap[field] }]
+          }
         }
-      },
-      /**
-       * 根据规则校验字段的限定范围
-       * @param {*} list
-       */
-      checkFieldsRange(list, rules) {
-        const msgList = []
-        for (const ruleKey in rules) {
-          const rule = rules[ruleKey]
-          const fieldName = ruleKey
-          list.forEach((item, index) => {
-            const fieldValue = item[rule.field]
-            if (fieldValue && !rule.range.includes(fieldValue)) {
-              msgList.push({
-                row: index + 2,
-                field: fieldName,
-                value: fieldValue
-              })
-            }
-          })
+      }
+      return []
+    },
+    checkDuplicateOriginalDeviceNo(arr) {
+      const occurrences = {}
+      arr.forEach((item, index) => {
+        const key = item.yuanSheBeiBian
+        if (occurrences[key]) {
+          occurrences[key].push(index + 2)
+        } else {
+          occurrences[key] = [index + 2]
         }
-        return msgList
-      },
-      /**
-       * 校验日期字段填写的格式
-       * @param {*} list
-       * @returns
-       */
-      checkDateFields(list) {
-        const dateRegex = /^(\d{4})[-/](0[1-9]|1[0-2])[-/](0[1-9]|[12]\d|3[01])$/
-        for (let i = 0; i < list.length; i++) {
-          const row = list[i]
-          for (const field in this.dateFieldsMap) {
-            if (row[field] && !dateRegex.test(row[field])) {
-              console.error('error field:', row[field])
-              return [{ row: i + 2, field: this.dateFieldsMap[field] }]
+      })
+      // 检查是否有重复项(数组长度大于1)
+      for (const [key, indices] of Object.entries(occurrences)) {
+        if (indices.length > 1) {
+          return [
+            {
+              field: `发现重复的原设备编号:${key} 在第 ${indices.join(
+                ', '
+              )} 行`
             }
-          }
-        }
-        return []
-      },
-      checkDuplicateOriginalDeviceNo(arr) {
-        const occurrences = {}
-        arr.forEach((item, index) => {
-          const key = item.yuanSheBeiBian
-          if (occurrences[key]) {
-            occurrences[key].push(index + 2)
-          } else {
-            occurrences[key] = [index + 2]
-          }
-        })
-        // 检查是否有重复项(数组长度大于1)
-        for (const [key, indices] of Object.entries(occurrences)) {
-          if (indices.length > 1) {
-            return [
-              {
-                field: `发现重复的原设备编号:${key} 在第 ${indices.join(
-                  ', '
-                )} 行`
-              }
-            ]
-          }
+          ]
         }
-        return []
-      },
-      /**
-       * 负责导入设备数据的第一部分校验,全部成功则返回true
-       * @param {*} data
-       * @returns
-       */
-      deviceInvalidPartOne(data) {
-        // 校验必填信息
-        const invalidResult = this.checkDeviceRequiredFieldsIfEmpty(
-          data,
-          this.requiredFieldMap
+      }
+      return []
+    },
+    /**
+     * 负责导入设备数据的第一部分校验,全部成功则返回true
+     * @param {*} data
+     * @returns
+     */
+    deviceInvalidPartOne(data) {
+      // 校验必填信息
+      const invalidResult = this.checkDeviceRequiredFieldsIfEmpty(
+        data,
+        this.requiredFieldMap
+      )
+      if (invalidResult.length > 0) {
+        this.sendWarningMessages(invalidResult, 'required')
+        return false
+      }
+      // 根据规则校验字段的限定范围
+      const allResult = this.checkFieldsRange(data, this.validationRules)
+      if (allResult.length > 0) {
+        this.sendWarningMessages(allResult, 'range')
+        return false
+      }
+      // 校验日期字段是否符合要求
+      const dateResult = this.checkDateFields(data)
+      if (dateResult.length > 0) {
+        this.sendWarningMessages(dateResult, 'dateFormat')
+        return false
+      }
+      // 校验是否存在重复的原设备编号
+      const duplicateOriginalDeviceResult =
+        this.checkDuplicateOriginalDeviceNo(data)
+      if (duplicateOriginalDeviceResult.length > 0) {
+        this.sendWarningMessages(
+          duplicateOriginalDeviceResult,
+          'duplicateOriginalDevice'
         )
-        if (invalidResult.length > 0) {
-          this.sendWarningMessages(invalidResult, 'required')
-          return false
-        }
-        // 根据规则校验字段的限定范围
-        const allResult = this.checkFieldsRange(data, this.validationRules)
-        if (allResult.length > 0) {
-          this.sendWarningMessages(allResult, 'range')
-          return false
-        }
-        // 校验日期字段是否符合要求
-        const dateResult = this.checkDateFields(data)
-        if (dateResult.length > 0) {
-          this.sendWarningMessages(dateResult, 'dateFormat')
-          return false
-        }
-        // 校验是否存在重复的原设备编号
-        const duplicateOriginalDeviceResult =
-          this.checkDuplicateOriginalDeviceNo(data)
-        if (duplicateOriginalDeviceResult.length > 0) {
-          this.sendWarningMessages(
-            duplicateOriginalDeviceResult,
-            'duplicateOriginalDevice'
-          )
-          return false
-        }
-        return true
-      },
-      /**
-       * 将日期字段信息格式化为 yyyy-MM-dd
-       * @param {*} list
-       * @returns
-       */
-      formatDateFieldsToReal(list) {
-        list.forEach((item) => {
-          this.dateFieldRange.forEach((field) => {
-            item[field] = item[field]?.replace(/\//g, '-')
-          })
-        })
-        return list
-      },
-      getNextAlias() {
-        return new Promise((resolve, reject) => {
-          this.$common
-            .getNextIdByAlias({
-              alias: 'sbbh'
-            })
-            .then((response) => {
-              resolve(response.data)
-            })
-            .catch((error) => {
-              reject(error)
-            })
+        return false
+      }
+      return true
+    },
+    /**
+     * 将日期字段信息格式化为 yyyy-MM-dd
+     * @param {*} list
+     * @returns
+     */
+    formatDateFieldsToReal(list) {
+      list.forEach((item) => {
+        this.dateFieldRange.forEach((field) => {
+          item[field] = item[field]?.replace(/\//g, '-')
         })
-      },
-      /**
-       * 过滤出来excel 的原设备编号存在当前数据库中的数据
-       * @param {*} list 导入的数据
-       */
-      async filterOriginalDeviceNo(list, currentPosition) {
-        const uniqueArr = Array.from(
-          new Set(list.map((i) => i.yuanSheBeiBian.trim()))
+      })
+      return list
+    },
+    getNextAlias() {
+      return new Promise((resolve, reject) => {
+        this.$common
+          .getNextIdByAlias({
+            alias: 'sbbh'
+          })
+          .then((response) => {
+            resolve(response.data)
+          })
+          .catch((error) => {
+            reject(error)
+          })
+      })
+    },
+    /**
+     * 过滤出来excel 的原设备编号存在当前数据库中的数据
+     * @param {*} list 导入的数据
+     */
+    async filterOriginalDeviceNo(list, currentPosition) {
+      const uniqueArr = Array.from(
+        new Set(list.map((i) => i.yuanSheBeiBian.trim()))
+      )
+      // const sql = `select id_,yuan_she_bei_bian from t_sbdj where find_in_set(yuan_she_bei_bian,'${uniqueArr.join(',')}')and di_dian_ = '${currentPosition}'`
+      const res = await this.$common.request('query', {
+        key: 'getExistDeviceWithImport',
+        params: [uniqueArr.join(','), currentPosition]
+      })
+      const { data = [] } = res.variables || {}
+      const originalDeviceNoList = data.map((i) => i.yuan_she_bei_bian.trim())
+      // 给要更新的数据加上id (接口需要!!!)
+      data.forEach((item) => {
+        const temp = list.find(
+          (i) => i.yuanSheBeiBian === item.yuan_she_bei_bian
         )
-        // const sql = `select id_,yuan_she_bei_bian from t_sbdj where find_in_set(yuan_she_bei_bian,'${uniqueArr.join(',')}')and di_dian_ = '${currentPosition}'`
-        const res = await this.$common.request('query', {
-          key: 'getExistDeviceWithImport',
-          params: [uniqueArr.join(','), currentPosition]
-        })
-        const { data = [] } = res.variables || {}
-        const originalDeviceNoList = data.map((i) => i.yuan_she_bei_bian.trim())
-        // 给要更新的数据加上id (接口需要!!!)
-        data.forEach((item) => {
-          const temp = list.find(
-            (i) => i.yuanSheBeiBian === item.yuan_she_bei_bian
-          )
-          temp.id = item.id_
-        })
-        return originalDeviceNoList || ''
-      },
-      /**
-       *
-       * @param {*} list excel数据
-       * @param {*} currentTime 当前时间
-       * @param {*} currentApartment 当前部门ID
-       * @param {*} currentUser 当前用户ID
-       * @param {*} currentPosition 当前地点ID
-       */
-      async handleBasicData(
-        list,
-        currentTime,
-        currentApartment,
-        currentUser,
-        currentPosition,
-        deptList
-      ) {
-        // 使用map生成一个异步操作的数组
-        const promises = list.map(async (element) => {
-          element.bianZhiShiJian = currentTime
-          element.bianZhiRen = currentUser
-          element.diDian = currentPosition
-          element.shiFouGuoShen = '已完成'
-          const o = deptList?.find(
-            (i) => i.positionName === element.bianZhiBuMen.trim()
-          )
-          const { positionId = currentApartment } = o || {}
-          element.bianZhiBuMen = positionId
-          if (!element.id) {
-            // 获取下一个编号
-            element.sheBeiShiBieH = await this.getNextAlias()
-          }
-        })
-        // 使用Promise.all并发执行所有异步操作
-        await Promise.all(promises)
-      },
-  
-      /**
-       *
-       * @param {*} list excel数据
-       * @param {*} positionList 现有房间信息
-       * @param {*} supplierList 现有供应商信息
-       * @param {*} employeeList 现有人员信息
-       * @returns
-       */
-      handleExcelData(
-        list,
-        positionList,
-        supplierList,
-        employeeList,
-        deviceGroupList
-      ) {
-        if (list.length < 1) {
-          return
+        temp.id = item.id_
+      })
+      return originalDeviceNoList || ''
+    },
+    /**
+     *
+     * @param {*} list excel数据
+     * @param {*} currentTime 当前时间
+     * @param {*} currentApartment 当前部门ID
+     * @param {*} currentUser 当前用户ID
+     * @param {*} currentPosition 当前地点ID
+     */
+    async handleBasicData(
+      list,
+      currentTime,
+      currentApartment,
+      currentUser,
+      currentPosition,
+      deptList
+    ) {
+      // 使用map生成一个异步操作的数组
+      const promises = list.map(async (element) => {
+        element.bianZhiShiJian = currentTime
+        element.bianZhiRen = currentUser
+        element.diDian = currentPosition
+        element.shiFouGuoShen = '已完成'
+        const o = deptList?.find(
+          (i) => i.positionName === element.bianZhiBuMen.trim()
+        )
+        const { positionId = currentApartment } = o || {}
+        element.bianZhiBuMen = positionId
+        if (!element.id) {
+          // 获取下一个编号
+          element.sheBeiShiBieH = await this.getNextAlias()
         }
-        this.handleSupplierInfo(list, supplierList)
-        this.handlePositionInfo(list, positionList)
-        this.handlePersonInfo(list, employeeList)
-        this.handleDeviceGroupInfo(list, deviceGroupList)
-      },
-      /**
-       *
-       * @param {*} list excel数据
-       * @param {*} supplierList 现有供应商信息
-       */
-      handleSupplierInfo(list, supplierList) {
-        list.forEach((element) => {
-          if (element.gongYingShang.trim()) {
-            const supplier = supplierList.find(
-              (i) => i.gong_ying_shang_m === element.gongYingShang.trim()
-            )
-            if (supplier) {
-              element.shiFouQiJianH = supplier.id_
-            } else {
-              element.shiFouQiJianH = ''
-              element.gongYingShang = ''
-            }
+      })
+      // 使用Promise.all并发执行所有异步操作
+      await Promise.all(promises)
+    },
+
+    /**
+     *
+     * @param {*} list excel数据
+     * @param {*} positionList 现有房间信息
+     * @param {*} supplierList 现有供应商信息
+     * @param {*} employeeList 现有人员信息
+     * @returns
+     */
+    handleExcelData(
+      list,
+      positionList,
+      supplierList,
+      employeeList,
+      deviceGroupList
+    ) {
+      if (list.length < 1) {
+        return
+      }
+      this.handleSupplierInfo(list, supplierList)
+      this.handlePositionInfo(list, positionList)
+      this.handlePersonInfo(list, employeeList)
+      this.handleDeviceGroupInfo(list, deviceGroupList)
+    },
+    /**
+     *
+     * @param {*} list excel数据
+     * @param {*} supplierList 现有供应商信息
+     */
+    handleSupplierInfo(list, supplierList) {
+      list.forEach((element) => {
+        if (element.gongYingShang.trim()) {
+          const supplier = supplierList.find(
+            (i) => i.gong_ying_shang_m === element.gongYingShang.trim()
+          )
+          if (supplier) {
+            element.shiFouQiJianH = supplier.id_
           } else {
             element.shiFouQiJianH = ''
+            element.gongYingShang = ''
           }
-  
-          if (element.shiYongKeShi.trim()) {
-            const supplier = supplierList.find(
-              (i) => i.gong_ying_shang_m === element.shiYongKeShi.trim()
-            )
-            if (supplier) {
-              element.shiYongKeShi = supplier.id_
-            } else {
-              element.shiYongKeShi = ''
-            }
+        } else {
+          element.shiFouQiJianH = ''
+        }
+
+        if (element.shiYongKeShi.trim()) {
+          const supplier = supplierList.find(
+            (i) => i.gong_ying_shang_m === element.shiYongKeShi.trim()
+          )
+          if (supplier) {
+            element.shiYongKeShi = supplier.id_
           } else {
             element.shiYongKeShi = ''
           }
-        })
-      },
-      /**
-       *
-       * @param {*} list excel数据
-       * @param {*} positionList 现有房间信息
-       */
-      handlePositionInfo(list, positionList) {
-        list.forEach((element) => {
-          if (element.cunFangDiDian !== '') {
-            const postion = positionList.find(
-              (i) =>
-                (i.fang_jian_ming_ha.trim() || '') ===
-                element.cunFangDiDian.trim()
-            )
-            if (postion) {
-              const positionId = postion.id_
-              element.cunFangWeiZhi = positionId
-            } else {
-              element.cunFangWeiZhi = ''
-              element.cunFangDiDian = ''
-            }
+        } else {
+          element.shiYongKeShi = ''
+        }
+      })
+    },
+    /**
+     *
+     * @param {*} list excel数据
+     * @param {*} positionList 现有房间信息
+     */
+    handlePositionInfo(list, positionList) {
+      list.forEach((element) => {
+        if (element.cunFangDiDian !== '') {
+          const postion = positionList.find(
+            (i) =>
+              (i.fang_jian_ming_ha.trim() || '') ===
+              element.cunFangDiDian.trim()
+          )
+          if (postion) {
+            const positionId = postion.id_
+            element.cunFangWeiZhi = positionId
           } else {
             element.cunFangWeiZhi = ''
+            element.cunFangDiDian = ''
           }
-        })
-      },
-      handlePersonInfo(list, employeeList) {
-        list.forEach((element) => {
-          // 处理保管人
-          if (element.guanLiRen !== '') {
-            const person = employeeList.find(
-              (i) => i.userName === element.guanLiRen.trim()
-            )
-            if (person) {
-              const personId = person.userId
-              element.guanLiRen = personId
-            } else {
-              element.guanLiRen = ''
-            }
+        } else {
+          element.cunFangWeiZhi = ''
+        }
+      })
+    },
+    handlePersonInfo(list, employeeList) {
+      list.forEach((element) => {
+        // 处理保管人
+        if (element.guanLiRen !== '') {
+          const person = employeeList.find(
+            (i) => i.userName === element.guanLiRen.trim()
+          )
+          if (person) {
+            const personId = person.userId
+            element.guanLiRen = personId
           } else {
             element.guanLiRen = ''
           }
-          // 处理核查人
-          // if (element.biXuDeHuanJin !== '') {
-          //     const checkPerson = employeeList.find(i => i.userName === element.biXuDeHuanJin.trim())
-          //     if (checkPerson) {
-          //         const checkPersonId = checkPerson.userId
-          //         element.biXuDeHuanJin = checkPersonId
-          //     } else {
-          //         element.biXuDeHuanJin = ''
-          //     }
-          // } else {
-          //     element.biXuDeHuanJin = ''
-          // }
-        })
-      },
-      handleDeviceGroupInfo(list, deviceGroupList) {
-        list.forEach((element) => {
-          const result = []
-          const { weiHuFangShi } = element
-          const valList = weiHuFangShi.trim()?.split(',')
-          valList.forEach((item) =>
-            result.push(
-              deviceGroupList?.find((i) => i.positionName === item)?.positionId ||
-                ''
-            )
+        } else {
+          element.guanLiRen = ''
+        }
+        // 处理核查人
+        // if (element.biXuDeHuanJin !== '') {
+        //     const checkPerson = employeeList.find(i => i.userName === element.biXuDeHuanJin.trim())
+        //     if (checkPerson) {
+        //         const checkPersonId = checkPerson.userId
+        //         element.biXuDeHuanJin = checkPersonId
+        //     } else {
+        //         element.biXuDeHuanJin = ''
+        //     }
+        // } else {
+        //     element.biXuDeHuanJin = ''
+        // }
+      })
+    },
+    handleDeviceGroupInfo(list, deviceGroupList) {
+      list.forEach((element) => {
+        const result = []
+        const { weiHuFangShi } = element
+        const valList = weiHuFangShi.trim()?.split(',')
+        valList.forEach((item) =>
+          result.push(
+            deviceGroupList?.find((i) => i.positionName === item)?.positionId ||
+              ''
           )
-          element.weiHuFangShi = result.join(',')
-        })
-      },
-      async handleUploadChange1(file) {
-        const dataBinary = await this.readFile(file.target.files[0])
-        file.target.value = null // 注意上传后要将input的值设为空
-        const workBook = xlsx.read(dataBinary, {
-          type: 'binary',
-          cellDates: true
+        )
+        element.weiHuFangShi = result.join(',')
+      })
+    },
+    async handleUploadChange1(file) {
+      const dataBinary = await this.readFile(file.target.files[0])
+      file.target.value = null // 注意上传后要将input的值设为空
+      const workBook = xlsx.read(dataBinary, {
+        type: 'binary',
+        cellDates: true
+      })
+      const workSheet = workBook.Sheets[workBook.SheetNames[0]]
+      const data = xlsx.utils.sheet_to_json(workSheet)
+      let importData = this.switchDeviceObj(data, {
+        ...this.deviceColumns,
+        t: '设备分组'
+      }) // 这个t用于兼容老版本的模板
+      importData.forEach((i) => {
+        delete i.sheBeiShiBieH // 设备编号需自动生成
+        // i.sheBeiZhuangTa = '合格'
+        const keyFound = Object.entries(this.stateList).find(
+          ([key, value]) => value === i.sheBeiZhuangTa
+        )
+        if (keyFound) {
+          i.sheBeiZhuangTa = keyFound[0]
+        }
+        const keyFound2 = Object.entries(this.typeList).find(
+          ([key, value]) => value === i.sheBeiLeiXing
+        )
+        if (keyFound2) {
+          i.sheBeiLeiXing = keyFound2[0]
+        }
+      })
+      const isNewVersion = importData.some((i) => i.weiHuFangShi) // 判断是否是最新模板
+      if (isNewVersion) {
+        // 使用岗位/分组
+        importData.forEach((i) => {
+          delete i.t
         })
-        const workSheet = workBook.Sheets[workBook.SheetNames[0]]
-        const data = xlsx.utils.sheet_to_json(workSheet)
-        let importData = this.switchDeviceObj(data, {
-          ...this.deviceColumns,
-          t: '设备分组'
-        }) // 这个t用于兼容老版本的模板
+      } else {
+        // 使用设备分组
         importData.forEach((i) => {
-          delete i.sheBeiShiBieH // 设备编号需自动生成
-          // i.sheBeiZhuangTa = '合格'
-          const keyFound = Object.entries(this.stateList).find(
-            ([key, value]) => value === i.sheBeiZhuangTa
+          i.weiHuFangShi = i.t
+          delete i.t
+        })
+      }
+      const currentPosition = this.level
+      const { userList = [], deptList = [] } = this.$store.getters || {}
+      // const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
+      // const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
+      // const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
+      const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
+      const currentApartment =
+        this.$store.getters.userInfo.employee.positions.split(',').at(-1) || ''
+      const currentUser = this.userId
+
+      const partOneInvalidResult = this.deviceInvalidPartOne(importData)
+      if (!partOneInvalidResult) return
+
+      importData = this.formatDateFieldsToReal(importData)
+      console.log(
+        '%c partOne doCheck is completed! %c the result is %c',
+        'background:#35495E; padding: 1px; border-radius: 3px 0 0 3px; color: #fff;',
+        'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
+        'background:transparent',
+        importData
+      )
+      this.loading = true
+      Promise.all([
+        this.$common.request('query', {
+          key: 'getRoomData',
+          params: [currentPosition]
+        }),
+        this.$common.request('query', {
+          key: 'getSupplierList',
+          params: [currentPosition]
+        }),
+        this.$common.request('query', {
+          key: this.config ? 'gwzzzha' : 'getPositionList',
+          params: [currentPosition]
+        })
+      ])
+        .then(async ([res1, res2, res3]) => {
+          const { data: positionList = [] } = res1.variables || {}
+          const { data: supplierList = [] } = res2.variables || {}
+          const { data: deviceGroupList = [] } = res3.variables || {}
+          // 根据原设备编号去重,检验原设备编号是否在数据库中存在
+          const originalDeviceNoList = await this.filterOriginalDeviceNo(
+            importData,
+            currentPosition
           )
-          if (keyFound) {
-            i.sheBeiZhuangTa = keyFound[0]
-          }
-          const keyFound2 = Object.entries(this.typeList).find(
-            ([key, value]) => value === i.sheBeiLeiXing
+          await this.handleBasicData(
+            importData,
+            currentTime,
+            currentApartment,
+            currentUser,
+            currentPosition,
+            deptList
           )
-          if (keyFound2) {
-            i.sheBeiLeiXing = keyFound2[0]
-          }
+          this.handleExcelData(
+            importData,
+            positionList,
+            supplierList,
+            userList,
+            deviceGroupList
+          )
+          // 分离出 已存在的设备,和新设备
+          const newDeviceList = importData.filter(
+            (i) => !originalDeviceNoList.includes(i.yuanSheBeiBian.trim())
+          )
+          const existDeviceList = importData.filter((i) =>
+            originalDeviceNoList.includes(i.yuanSheBeiBian.trim())
+          )
+          console.log(
+            '%c new device %c',
+            'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
+            'background:transparent',
+            newDeviceList
+          )
+          console.log(
+            '%c already exist device %c',
+            'background:#43f80c; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
+            'background:transparent',
+            existDeviceList
+          )
+          this.loading = false
+          this.$confirm(
+            `<span style="color:#f56c6c; font-size: 18px; font-weight: 600;">
+                                        经系统判定</span><br>1.预期新导入设备的数量为 ${newDeviceList.length} 台!<br>
+                                        2.预期更新已存在的设备数量为 ${existDeviceList.length} 台!<br>
+                                        <span style="color:#f56c6c;">Tips:请确认数据无误再点击确定进行导入</span><br><span style="color:#f56c6c; font-size: 18px; font-weight: 600;">请谨慎操作!</span>`,
+            '提示',
+            {
+              confirmButtonText: '确定',
+              cancelButtonText: '取消',
+              dangerouslyUseHTMLString: true,
+              type: 'warning'
+            }
+          )
+            .then(async () => {
+              await this.doImportDevice(importData)
+              this.loading = true
+              setTimeout(() => {
+                this.loading = false
+                this.$message.success('设备数据导入成功!')
+                this.getDatas()
+              }, 1000)
+            })
+            .catch(() => {})
         })
-        const isNewVersion = importData.some((i) => i.weiHuFangShi) // 判断是否是最新模板
-        if (isNewVersion) {
-          // 使用岗位/分组
-          importData.forEach((i) => {
-            delete i.t
-          })
+        .catch(() => {
+          this.loading = false
+        })
+    },
+    async doImportDevice(existDeviceList, currentPosition) {
+      this.loading = true
+      const allRequests = []
+      for (let index = 0; index < existDeviceList.length; index++) {
+        const item = existDeviceList[index]
+        let params = {}
+        if (item.id) {
+          // 获取设备数据
+          const { data: itemData } = await getequipmentCard({ id: item.id })
+          params = { ...itemData, ...item } // 合并数据
         } else {
-          // 使用设备分组
-          importData.forEach((i) => {
-            i.weiHuFangShi = i.t
-            delete i.t
-          })
+          params = item // 直接使用当前 item
         }
-        const currentPosition = this.level
-        const { userList = [], deptList = [] } = this.$store.getters || {}
-        // const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
-        // const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
-        // const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
-        const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
-        const currentApartment =
-          this.$store.getters.userInfo.employee.positions.split(',').at(-1) || ''
-        const currentUser = this.userId
-  
-        const partOneInvalidResult = this.deviceInvalidPartOne(importData)
-        if (!partOneInvalidResult) return
-  
-        importData = this.formatDateFieldsToReal(importData)
-        console.log(
-          '%c partOne doCheck is completed! %c the result is %c',
-          'background:#35495E; padding: 1px; border-radius: 3px 0 0 3px; color: #fff;',
-          'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
-          'background:transparent',
-          importData
-        )
-        this.loading = true
-        Promise.all([
-          this.$common.request('query', {
-            key: 'getRoomData',
-            params: [currentPosition]
-          }),
-          this.$common.request('query', {
-            key: 'getSupplierList',
-            params: [currentPosition]
-          }),
-          this.$common.request('query', {
-            key: this.config ? 'gwzzzha' : 'getPositionList',
-            params: [currentPosition]
-          })
-        ])
-          .then(async ([res1, res2, res3]) => {
-            const { data: positionList = [] } = res1.variables || {}
-            const { data: supplierList = [] } = res2.variables || {}
-            const { data: deviceGroupList = [] } = res3.variables || {}
-            // 根据原设备编号去重,检验原设备编号是否在数据库中存在
-            const originalDeviceNoList = await this.filterOriginalDeviceNo(
-              importData,
-              currentPosition
-            )
-            await this.handleBasicData(
-              importData,
-              currentTime,
-              currentApartment,
-              currentUser,
-              currentPosition,
-              deptList
-            )
-            this.handleExcelData(
-              importData,
-              positionList,
-              supplierList,
-              userList,
-              deviceGroupList
-            )
-            // 分离出 已存在的设备,和新设备
-            const newDeviceList = importData.filter(
-              (i) => !originalDeviceNoList.includes(i.yuanSheBeiBian.trim())
-            )
-            const existDeviceList = importData.filter((i) =>
-              originalDeviceNoList.includes(i.yuanSheBeiBian.trim())
-            )
-            console.log(
-              '%c new device %c',
-              'background:#FF5733; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
-              'background:transparent',
-              newDeviceList
-            )
-            console.log(
-              '%c already exist device %c',
-              'background:#43f80c; padding: 1px; border-radius: 0 3px 3px 0; color: #fff;',
-              'background:transparent',
-              existDeviceList
-            )
-            this.loading = false
-            this.$confirm(
-              `<span style="color:#f56c6c; font-size: 18px; font-weight: 600;">
-                                          经系统判定</span><br>1.预期新导入设备的数量为 ${newDeviceList.length} 台!<br>
-                                          2.预期更新已存在的设备数量为 ${existDeviceList.length} 台!<br>
-                                          <span style="color:#f56c6c;">Tips:请确认数据无误再点击确定进行导入</span><br><span style="color:#f56c6c; font-size: 18px; font-weight: 600;">请谨慎操作!</span>`,
-              '提示',
-              {
-                confirmButtonText: '确定',
-                cancelButtonText: '取消',
-                dangerouslyUseHTMLString: true,
-                type: 'warning'
-              }
-            )
-              .then(async () => {
-                await this.doImportDevice(importData)
-                this.loading = true
-                setTimeout(() => {
-                  this.loading = false
-                  this.$message.success('设备数据导入成功!')
-                  this.getDatas()
-                }, 1000)
-              })
-              .catch(() => {})
-          })
-          .catch(() => {
-            this.loading = false
-          })
-      },
-      async doImportDevice(existDeviceList, currentPosition) {
-        this.loading = true
-        const allRequests = []
-        for (let index = 0; index < existDeviceList.length; index++) {
-          const item = existDeviceList[index]
-          let params = {}
-          if (item.id) {
-            // 获取设备数据
-            const { data: itemData } = await getequipmentCard({ id: item.id })
-            params = { ...itemData, ...item } // 合并数据
-          } else {
-            params = item // 直接使用当前 item
+        console.log(params)
+        // 将每个 saveEquipmentCard 请求加入到 allRequests 数组中
+        allRequests.push(saveEquipmentCard(params))
+      }
+      // 等待所有异步请求完成
+      await Promise.all(allRequests)
+      this.loading = false
+    },
+    generateDayRule() {
+      const days = [
+        '每周1',
+        '每周2',
+        '每周3',
+        '每周4',
+        '每周5',
+        '每周6',
+        '每周7'
+      ]
+      let combinations = []
+      for (let length = 1; length <= days.length; length++) {
+        this.generateCombinations([], days, combinations)
+      }
+      combinations = combinations.map(
+        (comb) => '每周' + comb.map((item) => item.slice(2)).join(',')
+      )
+      combinations.push('每天')
+      return combinations
+    },
+    generateRule(num, prefix, suffix) {
+      return Array.from({ length: num }, (_, i) => prefix + `${i + 1}` + suffix)
+    },
+    generateCombinations(current, remaining, results) {
+      if (remaining.length === 0) {
+        results.push(current)
+        return
+      }
+      const first = remaining[0]
+      const rest = remaining.slice(1)
+      // 包括当前数字和不包括当前数字两种情况
+      this.generateCombinations(current.concat([first]), rest, results)
+      this.generateCombinations(current, rest, results)
+    },
+    /**
+     * 负责导入设备维护项目数据的第一部分校验,全部成功则返回true
+     * @param {*} data
+     * @returns
+     */
+    maintenanceInvalidPartOne(data) {
+      // 1、对数据进行清洗校验(设备编号不能为空,维护周期、维护项目亦不可为空)
+      const invalidResult = this.checkDeviceRequiredFieldsIfEmpty(
+        data,
+        this.maintenanceRequiredFieldMap
+      )
+      if (invalidResult.length > 0) {
+        this.sendWarningMessages(invalidResult, 'required')
+        return false
+      }
+      // 根据规则校验字段的限定范围
+      const allResult = this.checkFieldsRange(
+        data,
+        this.maintenanceValidationRules
+      )
+      if (allResult.length > 0) {
+        this.sendWarningMessages(allResult, 'range')
+        return false
+      }
+      // 根据规则校验维护周期对应的维护日期的限定范围
+      const result = this.checkMaintenanceDateRange(
+        data,
+        this.maintenanceDateValidationRules
+      )
+      if (result.length > 0) {
+        this.sendWarningMessages(result, 'range')
+        return false
+      }
+      return true
+    },
+    /**
+     * 根据规则校验维护周期对应的维护日期的限定范围
+     */
+    checkMaintenanceDateRange(list, rules) {
+      const msgList = []
+      list.forEach(({ weiHuLeiXing: type, weiHuRiQi: exactDate }, index) => {
+        if (type === '按需保养') {
+          console.log('按需pass2')
+        } else {
+          if (!rules[type].includes(exactDate)) {
+            msgList.push({
+              row: index + 2,
+              field: '维护日期',
+              value: exactDate
+            })
           }
-          console.log(params)
-          // 将每个 saveEquipmentCard 请求加入到 allRequests 数组中
-          allRequests.push(saveEquipmentCard(params))
-        }
-        // 等待所有异步请求完成
-        await Promise.all(allRequests)
-        this.loading = false
-      },
-      generateDayRule() {
-        const days = [
-          '每周1',
-          '每周2',
-          '每周3',
-          '每周4',
-          '每周5',
-          '每周6',
-          '每周7'
-        ]
-        let combinations = []
-        for (let length = 1; length <= days.length; length++) {
-          this.generateCombinations([], days, combinations)
-        }
-        combinations = combinations.map(
-          (comb) => '每周' + comb.map((item) => item.slice(2)).join(',')
-        )
-        combinations.push('每天')
-        return combinations
-      },
-      generateRule(num, prefix, suffix) {
-        return Array.from({ length: num }, (_, i) => prefix + `${i + 1}` + suffix)
-      },
-      generateCombinations(current, remaining, results) {
-        if (remaining.length === 0) {
-          results.push(current)
-          return
-        }
-        const first = remaining[0]
-        const rest = remaining.slice(1)
-        // 包括当前数字和不包括当前数字两种情况
-        this.generateCombinations(current.concat([first]), rest, results)
-        this.generateCombinations(current, rest, results)
-      },
-      /**
-       * 负责导入设备维护项目数据的第一部分校验,全部成功则返回true
-       * @param {*} data
-       * @returns
-       */
-      maintenanceInvalidPartOne(data) {
-        // 1、对数据进行清洗校验(设备编号不能为空,维护周期、维护项目亦不可为空)
-        const invalidResult = this.checkDeviceRequiredFieldsIfEmpty(
-          data,
-          this.maintenanceRequiredFieldMap
-        )
-        if (invalidResult.length > 0) {
-          this.sendWarningMessages(invalidResult, 'required')
-          return false
         }
-        // 根据规则校验字段的限定范围
-        const allResult = this.checkFieldsRange(
-          data,
-          this.maintenanceValidationRules
-        )
-        if (allResult.length > 0) {
-          this.sendWarningMessages(allResult, 'range')
-          return false
+      })
+      return msgList
+    },
+    async handleUploadChange2(file) {
+      const dataBinary = await this.readFile(file.target.files[0])
+      file.target.value = null // 注意上传后要将input的值设为空
+      const workBook = xlsx.read(dataBinary, {
+        type: 'binary',
+        cellDates: true
+      })
+      const workSheet = workBook.Sheets[workBook.SheetNames[0]]
+      const data = xlsx.utils.sheet_to_json(workSheet)
+      const importData = this.switchDeviceObj(data, this.projectColums)
+      console.log(importData)
+      importData.forEach((item) => {
+        if (item.weiHuLeiXing === '按需保养') {
+          item.weiHuRiQi = '/'
         }
-        // 根据规则校验维护周期对应的维护日期的限定范围
-        const result = this.checkMaintenanceDateRange(
-          data,
-          this.maintenanceDateValidationRules
-        )
-        if (result.length > 0) {
-          this.sendWarningMessages(result, 'range')
-          return false
+        if (
+          item.weiHuLeiXing === '日保养' &&
+          item.weiHuRiQi === '每周1,2,3,4,5,6,7'
+        ) {
+          item.weiHuRiQi = '每天'
         }
-        return true
-      },
-      /**
-       * 根据规则校验维护周期对应的维护日期的限定范围
-       */
-      checkMaintenanceDateRange(list, rules) {
-        const msgList = []
-        list.forEach(({ weiHuLeiXing: type, weiHuRiQi: exactDate }, index) => {
-          if (type === '按需保养') {
-            console.log('按需pass2')
-          } else {
-            if (!rules[type].includes(exactDate)) {
-              msgList.push({
-                row: index + 2,
-                field: '维护日期',
-                value: exactDate
-              })
-            }
-          }
-        })
-        return msgList
-      },
-      async handleUploadChange2(file) {
-        const dataBinary = await this.readFile(file.target.files[0])
-        file.target.value = null // 注意上传后要将input的值设为空
-        const workBook = xlsx.read(dataBinary, {
-          type: 'binary',
-          cellDates: true
+      })
+      const currentPosition = this.level
+      const { userList = [], deptList = [] } = this.$store.getters || {}
+      const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
+      const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
+      const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
+      const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
+      const currentApartment = this.$store.getters.userInfo.employee.positions
+      const currentUser = this.userId
+
+      const partOneInvalidResult = this.maintenanceInvalidPartOne(importData)
+      if (!partOneInvalidResult) return
+
+      // 2、根据原设备编号去重,检验原设备编号是否在数据库中存在,如有不存在的数据,不进行导入,并提示用户
+      const uniqueArr = Array.from(
+        new Set(importData.map((i) => i.yuanSheBeiBian.trim()))
+      )
+      /* 3、根据去重的设备编号去查对应的设备ID,然后拼接data数据,赋值设备ID*/
+      // const sql = `select id_,yuan_she_bei_bian from t_sbdj where find_in_set(yuan_she_bei_bian,'${uniqueArr.join(',')}')and di_dian_ = ${currentPosition}`
+      this.$common
+        .request('query', {
+          key: 'getExistDeviceWithImport',
+          params: [uniqueArr.join(','), currentPosition]
         })
-        const workSheet = workBook.Sheets[workBook.SheetNames[0]]
-        const data = xlsx.utils.sheet_to_json(workSheet)
-        const importData = this.switchDeviceObj(data, this.projectColums)
-        console.log(importData)
-        importData.forEach((item) => {
-          if (item.weiHuLeiXing === '按需保养') {
-            item.weiHuRiQi = '/'
-          }
-          if (
-            item.weiHuLeiXing === '日保养' &&
-            item.weiHuRiQi === '每周1,2,3,4,5,6,7'
-          ) {
-            item.weiHuRiQi = '每天'
+        .then(async (res) => {
+          const deviceNoWithIdlist = res.variables.data
+          console.log(deviceNoWithIdlist, ' <=> ', uniqueArr)
+          const deviceNoSet = new Set(
+            deviceNoWithIdlist.map((i) => i.yuan_she_bei_bian)
+          )
+          const missStr =
+            uniqueArr.filter((i) => !deviceNoSet.has(i)).join(',') || ''
+          if (missStr !== '') {
+            this.$message.error(
+              `设备维护项目数据中包含不存在于设备档案的原设备编号!具体原设备编号为:${missStr}`
+            )
+            return
           }
-        })
-        const currentPosition = this.level
-        const { userList = [], deptList = [] } = this.$store.getters || {}
-        const positionSql = `select id_,fang_jian_ming_ha from t_jjqfjb where di_dian_ = ${currentPosition}` // 房间信息
-        const supplierSql = `select id_,gong_ying_shang_m from t_gysxxb where di_dian_ = ${currentPosition}` // 供应商信息
-        const deviceGroupSql = `select id_,suo_shu_bu_men_,wei_hu_gang_wei_ from t_sbwhgwpzb where di_dian_ =  ${currentPosition}` // 岗位/分组信息
-        const currentTime = dayjs().format('YYYY-MM-DD HH:mm')
-        const currentApartment = this.$store.getters.userInfo.employee.positions
-        const currentUser = this.userId
-  
-        const partOneInvalidResult = this.maintenanceInvalidPartOne(importData)
-        if (!partOneInvalidResult) return
-  
-        // 2、根据原设备编号去重,检验原设备编号是否在数据库中存在,如有不存在的数据,不进行导入,并提示用户
-        const uniqueArr = Array.from(
-          new Set(importData.map((i) => i.yuanSheBeiBian.trim()))
-        )
-        /* 3、根据去重的设备编号去查对应的设备ID,然后拼接data数据,赋值设备ID*/
-        // const sql = `select id_,yuan_she_bei_bian from t_sbdj where find_in_set(yuan_she_bei_bian,'${uniqueArr.join(',')}')and di_dian_ = ${currentPosition}`
-        this.$common
-          .request('query', {
-            key: 'getExistDeviceWithImport',
-            params: [uniqueArr.join(','), currentPosition]
+          importData.forEach((item) => {
+            item.id = deviceNoWithIdlist.find(
+              (i) => i.yuan_she_bei_bian === item.yuanSheBeiBian
+            ).id_
           })
-          .then(async (res) => {
-            const deviceNoWithIdlist = res.variables.data
-            console.log(deviceNoWithIdlist, ' <=> ', uniqueArr)
-            const deviceNoSet = new Set(
-              deviceNoWithIdlist.map((i) => i.yuan_she_bei_bian)
-            )
-            const missStr =
-              uniqueArr.filter((i) => !deviceNoSet.has(i)).join(',') || ''
-            if (missStr !== '') {
-              this.$message.error(
-                `设备维护项目数据中包含不存在于设备档案的原设备编号!具体原设备编号为:${missStr}`
-              )
-              return
+
+          const resultList = []
+          importData.forEach((item) => {
+            const flag = item.weiHuLeiXing === '日保养'
+            const match = item.weiHuRiQi?.match(/\d+/g)
+            const o = {
+              id: item.id,
+              weiHuLeiXing: item.weiHuLeiXing.trim(),
+              weiHuRiQi: item.weiHuRiQi?.trim() || '',
+              weiHuXiangMuC: item.weiHuXiangMuC.trim(),
+              riQiShuZi: match ? (flag ? match.join(',') : match[0]) : ''
             }
-            importData.forEach((item) => {
-              item.id = deviceNoWithIdlist.find(
-                (i) => i.yuan_she_bei_bian === item.yuanSheBeiBian
-              ).id_
-            })
-  
-            const resultList = []
-            importData.forEach((item) => {
-              const flag = item.weiHuLeiXing === '日保养'
-              const match = item.weiHuRiQi?.match(/\d+/g)
-              const o = {
-                id: item.id,
-                weiHuLeiXing: item.weiHuLeiXing.trim(),
-                weiHuRiQi: item.weiHuRiQi?.trim() || '',
-                weiHuXiangMuC: item.weiHuXiangMuC.trim(),
-                riQiShuZi: match ? (flag ? match.join(',') : match[0]) : ''
-              }
-              if (o.weiHuLeiXing === '日保养' && o.weiHuRiQi === '每天')
-                o.riQiShuZi = '1,2,3,4,5,6,7'
-              resultList.push(o)
-            })
-            // 4、根据用户选择 进行全量替换|增量添加
-            await this.doProjectImport(
-              deviceNoWithIdlist,
-              resultList,
-              this.ImportDeviceType
-            )
-            this.$message.success(
-              '维护项目数据' + this.ImportDeviceType + '成功!'
-            )
+            if (o.weiHuLeiXing === '日保养' && o.weiHuRiQi === '每天')
+              o.riQiShuZi = '1,2,3,4,5,6,7'
+            resultList.push(o)
           })
-      },
-      async doProjectImport(deviceNoWithIdlist, resultList, type) {
-        this.loading = true
-        const allRequests = []
-        deviceNoWithIdlist.forEach(async (item) => {
-          const { data: itemData } = await getequipmentCard({ id: item.id_ })
-          const temp = resultList
-            .filter((i) => i.id === item.id_)
-            .map((ii) => {
-              delete ii.id
-              return ii
-            })
-          let params = {}
-          if (type === '增量添加') {
-            // 增量
-            params = {
-              ...itemData,
-              maintenanceItemPoList: [...itemData.maintenanceItemPoList, ...temp]
-            }
-          } else if (type === '全量替换') {
-            // 全量
-            params = {
-              ...itemData,
-              maintenanceItemPoList: temp
-            }
-          }
-          console.log('params', params)
-          allRequests.push(saveEquipmentCard(params))
+          // 4、根据用户选择 进行全量替换|增量添加
+          await this.doProjectImport(
+            deviceNoWithIdlist,
+            resultList,
+            this.ImportDeviceType
+          )
+          this.$message.success(
+            '维护项目数据' + this.ImportDeviceType + '成功!'
+          )
         })
-        await Promise.all(allRequests)
-        this.loading = false
-      }
-    }
-  }
-  </script>
-  
-  <style lang="scss" scoped>
-  .icon-image {
-    width: 36px;
-  }
-  .device-image {
-    width: 152px;
-    height: 110px;
-  }
-  .title {
-    font-size: 12px;
-    font-weight: 900;
-    color: #333;
-    margin: 0 0 14px 20px;
-  }
-  .ctx {
-    margin: 0 0 0 20px;
-    .item {
-      .cusitem {
-        margin: -8px 0;
-        display: flex;
-        align-items: center;
-      }
-      .span {
-        min-width: 60px;
-      }
-      margin: 6px 0;
-      color: #999;
+    },
+    async doProjectImport(deviceNoWithIdlist, resultList, type) {
+      this.loading = true
+      const allRequests = []
+      deviceNoWithIdlist.forEach(async (item) => {
+        const { data: itemData } = await getequipmentCard({ id: item.id_ })
+        const temp = resultList
+          .filter((i) => i.id === item.id_)
+          .map((ii) => {
+            delete ii.id
+            return ii
+          })
+        let params = {}
+        if (type === '增量添加') {
+          // 增量
+          params = {
+            ...itemData,
+            maintenanceItemPoList: [...itemData.maintenanceItemPoList, ...temp]
+          }
+        } else if (type === '全量替换') {
+          // 全量
+          params = {
+            ...itemData,
+            maintenanceItemPoList: temp
+          }
+        }
+        console.log('params', params)
+        allRequests.push(saveEquipmentCard(params))
+      })
+      await Promise.all(allRequests)
+      this.loading = false
     }
   }
-  ::v-deep {
-    .el-form-item__label {
-      text-align: left;
-      font-size: 12px !important;
+}
+</script>
+
+<style lang="scss" scoped>
+.icon-image {
+  width: 36px;
+}
+.device-image {
+  width: 152px;
+  height: 110px;
+}
+.title {
+  font-size: 12px;
+  font-weight: 900;
+  color: #333;
+  margin: 0 0 14px 20px;
+}
+.ctx {
+  margin: 0 0 0 20px;
+  .item {
+    .cusitem {
+      margin: -8px 0;
+      display: flex;
+      align-items: center;
     }
-    .el-form-item__ctx {
-      font-size: 12px !important;
+    .span {
+      min-width: 60px;
     }
+    margin: 6px 0;
+    color: #999;
+  }
+}
+::v-deep {
+  .el-form-item__label {
+    text-align: left;
+    font-size: 12px !important;
+  }
+  .el-form-item__ctx {
+    font-size: 12px !important;
   }
-  </style>
-  
+}
+</style>