From 2f5d64825dbc81f9732893ee9f3de1a38725ae25 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 10 三月 2025 17:12:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 src/views/CNAS/resourceDemand/device/component/state.vue |  605 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 605 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/resourceDemand/device/component/state.vue b/src/views/CNAS/resourceDemand/device/component/state.vue
new file mode 100644
index 0000000..e7467ce
--- /dev/null
+++ b/src/views/CNAS/resourceDemand/device/component/state.vue
@@ -0,0 +1,605 @@
+<!-- 璁惧鍋滅敤鍚敤 -->
+<template>
+  <div>
+    <div class="search">
+      <el-row :gutter="10" style="width: 100%;">
+        <el-col :span="20" style="display: flex;flex-wrap: wrap;">
+          <div class="search_thing">
+            <div class="search_label">娴佺▼缂栧彿锛�</div>
+            <div class="search_input">
+              <el-input v-model="search.processNumber" clearable placeholder="璇疯緭鍏�" size="small" style="width: 100%"
+                @keyup.enter.native="getDeviceStatePage(clickNodeVal.value)"></el-input>
+            </div>
+          </div>
+          <div class="search_thing" style="padding-left: 20px;">
+            <el-button size="small" @click="resetSearch">閲� 缃�</el-button>
+            <el-button size="small" type="primary" @click="getDeviceStatePage(clickNodeVal.value)">鏌� 璇�</el-button>
+          </div>
+        </el-col>
+        <el-col :span="4">
+          <div class="btns">
+            <el-button size="small" type="primary" @click="dialogVisible = true">鏂板缓</el-button>
+            <el-button :loading="outLoading" size="small" type="primary" @click="handleDown">瀵煎嚭Excel</el-button>
+          </div>
+        </el-col>
+      </el-row>
+    </div>
+    <div>
+      <el-table :data="tableDatalist" height="calc(100vh - 20em)" style="width: 100% ;">
+        <!-- 琛ㄦ牸鍒� -->
+        <el-table-column align="center" header-align="center" label="搴忓彿" prop="prop" type="index"
+          width="70"></el-table-column>
+        <el-table-column label="娴佺▼缂栧彿" min-width="180" prop="processNumber"></el-table-column>
+        <el-table-column label="璁惧鍚嶇О" min-width="180" prop="deviceName"></el-table-column>
+        <el-table-column label="绠$悊缂栧彿" min-width="150" prop="managementNumber"></el-table-column>
+        <el-table-column label="璁惧鐘舵��" min-width="130" prop="deviceStatus">
+          <template #default="{ row }">
+            {{ row.deviceStatus === '0scrap' ? '鎶ュ簾' : row.deviceStatus === '1startUsing' ? '鍚敤' : '鍋滅敤' }}
+          </template>
+        </el-table-column>
+        <el-table-column label="鍋滅敤/鍚敤鐞嗙敱" min-width="180" prop="reason"></el-table-column>
+        <el-table-column label="鎻愪氦浜�" min-width="130" prop="createUser"></el-table-column>
+        <el-table-column label="鎻愪氦鏃ユ湡" min-width="150" prop="createTime"></el-table-column>
+        <el-table-column label="褰撳墠鐘舵��" min-width="130" prop="currentState"></el-table-column>
+        <el-table-column label="褰撳墠璐d换浜�" min-width="180" prop="currentResponsible"></el-table-column>
+        <!-- 鎿嶄綔鎸夐挳 -->
+        <el-table-column fixed="right" label="鎿嶄綔" min-width="150">
+          <template #default="{ row }">
+            <el-button size="small" type="text" @click="handleViewClick(row)">鏌ョ湅</el-button>
+            <el-button size="small" type="text" @click="handleDownOne(row)">瀵煎嚭</el-button>
+            <el-button size="small" type="text" @click="handleDeleteClick(row)">鍒犻櫎</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination :current-page="1" :page-size="search.size" :page-sizes="[10, 20, 30, 50, 100]"
+        :total="search.total" layout="->,total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange"
+        @current-change="handleCurrentChange">
+      </el-pagination>
+    </div>
+    <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :visible.sync="dialogVisible" title="璁惧鎯呭喌"
+      top="5vh" width="60%" @open="openRecordAcceptance">
+      <el-steps :active="currentStep" align-center finish-status="success">
+        <el-step v-for="(v, i) in steps" :key="i" :title="v" style="cursor:pointer"
+          @click.native="choiceStep(i)"></el-step>
+      </el-steps>
+      <el-form ref="form" :model="form" :rules="rules" label-width="130px">
+        <div v-show="currentStepClick === 0">
+          <el-card style="margin-top: 1em; height: 42vh; overflow-y: scroll;">
+            <!-- 鍗$墖 -->
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="娴佺▼缂栧彿锛�">
+                  <el-input v-model="form.processNumber" disabled size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="绠$悊缂栧彿锛�">
+                  <el-input v-model="form.managementNumber" disabled size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="璁惧鍚嶇О锛�">
+                  <el-input v-model="form.deviceName" disabled size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="瑙勬牸鍨嬪彿锛�">
+                  <el-input v-model="form.specificationModel" disabled size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ラ厤浠�', trigger: 'blur' }]" label="閰嶄欢锛�"
+                  prop="accessoryPart">
+                  <el-input v-model="form.accessoryPart" :disabled="currentStep !== 0" size="small"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 0, message: '璇烽�夋嫨璁惧鐘舵��', trigger: 'change' }]"
+                  label="璁惧鎯呭喌锛�" prop="deviceStatus">
+                  <el-select v-model="form.deviceStatus" :disabled="currentStep !== 0" placeholder="璇烽�夋嫨" size="small"
+                    style="width:100%">
+                    <el-option label="鎶ュ簾" value="0scrap"></el-option>
+                    <el-option label="鍚敤" value="1startUsing"></el-option>
+                    <el-option label="鍋滅敤" value="2stopUsing"></el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 0, message: '璇疯緭鍏ュ仠鐢ㄥ惎鐢ㄧ悊鐢�', trigger: 'blur' }]"
+                  label="鍋滅敤鍚敤鐞嗙敱锛�" prop="reason">
+                  <el-input v-model="form.reason" :disabled="currentStep !== 0" :rows="3" size="small"
+                    type="textarea"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 0, message: '璇烽�夋嫨涓嬬幆鑺傝矗浠讳汉', trigger: 'change' }]"
+                  label="涓嬬幆鑺傝矗浠讳汉锛�" prop="submitNextPesponsible">
+                  <el-select v-model="form.submitNextPesponsible" :disabled="currentStep !== 0" clearable filterable
+                    placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 100%">
+                    <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+          <el-row style="margin-top: 1em;">
+            <el-col :span="4">
+              鎿嶄綔浜猴細{{ form.submitOperatingPersonnel }}
+            </el-col>
+            <el-col :span="6">
+              鏃ユ湡锛歿{ form.submitDate }}
+            </el-col>
+          </el-row>
+        </div>
+        <div v-show="currentStepClick === 1">
+          <el-card style="margin-top: 1em; height: 42vh; overflow-y: scroll;">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item label="閮ㄩ棬璐熻矗浜烘剰瑙侊細" prop="departmentReviewOpinion">
+                  <el-input v-model="form.departmentReviewOpinion" :disabled="currentStep !== 1" size="small"
+                    type="textarea"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 1, message: '璇疯緭鍏ヤ笅鐜妭璐d换浜�', trigger: 'change' }]"
+                  label="涓嬬幆鑺傝矗浠讳汉锛�" prop="departmentNextPesponsible">
+                  <el-select v-model="form.departmentNextPesponsible" :disabled="currentStep !== 1" clearable filterable
+                    placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 100%;">
+                    <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+          <el-row style="margin-top: 1em;">
+            <el-col :span="4">
+              鎿嶄綔浜猴細{{ form.departmentOperatingPersonnel }}
+            </el-col>
+            <el-col :span="6">
+              鏃ユ湡锛歿{ form.departmentDate }}
+            </el-col>
+          </el-row>
+        </div>
+        <div v-show="currentStepClick === 2">
+          <el-card style="margin-top: 1em; height: 42vh; overflow-y: scroll;">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item :rules="[{ required: currentStep === 2, message: '璇疯緭鍏ヨ閲忓鎰忚', trigger: 'blur' }]"
+                  label="璁¢噺瀹ゆ剰瑙侊細" prop="measuringRoomReviewOpinion">
+                  <el-input v-model="form.measuringRoomReviewOpinion" :disabled="currentStep !== 2" size="small"
+                    type="textarea"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 2, message: '璇疯緭鍏ヤ笅鐜妭璐d换浜�', trigger: 'blur' }]"
+                  label="涓嬬幆鑺傝矗浠讳汉锛�" prop="measuringRoomNextPesponsible">
+                  <el-select v-model="form.measuringRoomNextPesponsible" :disabled="currentStep !== 2" clearable
+                    filterable placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 100%;">
+                    <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+          <el-row style="margin-top: 1em;">
+            <el-col :span="4">
+              鎿嶄綔浜猴細{{ form.measuringRoomOperatingPersonnel }}
+            </el-col>
+            <el-col :span="6">
+              鏃ユ湡锛歿{ form.measuringRoomDate }}
+            </el-col>
+          </el-row>
+        </div>
+        <div v-show="currentStepClick === 3">
+          <el-card style="margin-top: 1em; height: 42vh; overflow-y: scroll;">
+            <el-row>
+              <el-col :span="24">
+                <el-form-item :rules="[{ required: currentStep === 3, message: '璇疯緭鍏ユ壒鍑嗘剰瑙�', trigger: 'blur' }]"
+                  label="鎵瑰噯鎰忚锛�" prop="approvalOpinion">
+                  <el-input v-model="form.approvalOpinion" :disabled="currentStep !== 3" size="small"
+                    type="textarea"></el-input>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item :rules="[{ required: currentStep === 3, message: '璇疯緭鍏ヤ笅鐜妭璐熻矗浜�', trigger: 'change' }]"
+                  label="涓嬬幆鑺傝矗浠讳汉锛�" prop="approvalNextPesponsible">
+                  <el-select v-model="form.approvalNextPesponsible" :disabled="currentStep !== 3" clearable filterable
+                    placeholder="璇烽�夋嫨涓嬬幆鑺傝礋璐d汉" size="small" style="width: 100%;">
+                    <el-option v-for="item in responsibleOptions" :key="item.id" :label="item.name" :value="item.name">
+                    </el-option>
+                  </el-select>
+                </el-form-item>
+              </el-col>
+            </el-row>
+          </el-card>
+          <el-row style="margin-top: 1em;">
+            <el-col :span="4">
+              鎿嶄綔浜猴細{{ form.approvalOperatingPersonnel }}
+            </el-col>
+            <el-col :span="6">
+              鏃ユ湡锛歿{ form.approvalDate }}
+            </el-col>
+          </el-row>
+        </div>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <el-button v-if="currentStep !== 0 && currentStep !== 4" :loading="sumbitLoading1"
+          @click="submitForm('3reject')">椹冲洖</el-button>
+        <el-button v-if="currentStep === 0" :loading="sumbitLoading2" @click="submitForm('2save')">淇濆瓨</el-button>
+        <el-button v-if="currentStep !== 4" :loading="sumbitLoading3" type="primary" @click="submitForm('1submit')">
+          {{ currentStep === 0 ? '鎻愪氦' : '閫氳繃' }}
+        </el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+<script>
+import {
+  saveDeviceState,
+  selectDeviceByCode,
+  exportDeviceStatus,
+  deleteDeviceState,
+  deviceStateExport,
+  getDeviceStatePage,
+} from '@/api/cnas/resourceDemand/device.js'
+import { selectUserCondition } from "@/api/system/user";
+import { dateFormat } from '@/utils/date'
+import { mapGetters } from "vuex";
+export default {
+  props: {
+    clickNodeVal: {
+      type: Object,
+      default: () => {
+        return {};
+      }
+    }
+  },
+  computed: {
+    ...mapGetters(["nickName"]),
+  },
+  data() {
+    return {
+      outLoading: false, // 瀵煎嚭loading
+      dialogVisible: false,
+      form: {},
+      currentStep: 0, // 姝ラ鏉℃樉绀虹鍑犳
+      currentStepClick: 0, // 鐐瑰嚮姝ラ鏉″彉鍖�
+      steps: ['鎻愪氦', '閮ㄩ棬璐熻矗浜�', '璁¢噺瀹�', '鎵瑰噯浜�'],
+      responsibleOptions: [], // 涓嬬幆鑺傝礋璐d汉
+      tableDatalist: [], // table琛ㄦ牸
+      rules: {
+        quantity: [{ required: true, message: '璇疯緭鍏ユ暟閲�', trigger: 'blur' }],
+      },
+      search: {
+        size: 20,
+        current: 1,
+        total: 0,
+        processNumber: ''
+      },
+      sumbitLoading1: false,
+      sumbitLoading2: false,
+      sumbitLoading3: false,
+    }
+  },
+  mounted() {
+    this.getDeviceStatePage(this.clickNodeVal.value)
+  },
+  methods: {
+    // 鍒嗛〉
+    handleSizeChange(val) {
+      this.search.size = val
+      this.getDeviceStatePage(this.clickNodeVal.value)
+    },
+    // 鍒嗛〉
+    handleCurrentChange(val) {
+      this.search.current = val
+      this.getDeviceStatePage(this.clickNodeVal.value)
+    },
+    //鎻愪氦琛ㄥ崟
+    async submitForm(saveState) {
+      let currentStepAction;
+      // 璁剧疆璇ユ搷浣滃垽鏂槸鍚︿负鎻愪氦锛屼繚瀛橈紝椹冲洖锛岄�氳繃 寮�鍚痩oding
+      switch (saveState) {
+        // 鎻愪氦锛岄�氳繃
+        case '1submit':
+          currentStepAction = this.currentStep + 1
+          this.sumbitLoading1 = true
+          break
+        // 淇濆瓨
+        case '2save':
+          currentStepAction = this.currentStep
+          this.sumbitLoading2 = true
+          break
+        // 椹冲洖
+        case '3reject':
+          currentStepAction = this.currentStep - 1
+          this.sumbitLoading3 = true
+          break
+        default:
+          break
+      }
+      this.$refs.form.validate((valid) => {
+        if (valid === true || saveState !== '1submit') {
+          // 缁欏綋鍓嶇幆鑺傝缃垱寤轰汉涓庢椂闂�
+          const dateTime = dateFormat(new Date())
+          // 鑾峰彇褰撳墠鐜妭鎿嶄綔浜轰笌鏃ユ湡
+          switch (this.currentStep) {
+            case 0:
+              this.form.createUser = this.nickName
+              this.form.submitOperatingPersonnel = this.nickName
+              this.form.submitDate = dateTime
+              break
+            case 1:
+              this.form.departmentOperatingPersonnel = this.nickName
+              this.form.departmentDate = dateTime
+              break
+            case 2:
+              this.form.measuringRoomOperatingPersonnel = this.nickName
+              this.form.measuringRoomDate = dateTime
+              break
+            case 3:
+              this.form.approvalOperatingPersonnel = this.nickName
+              this.form.approvalDate = dateTime
+              break
+            default:
+              break
+          }
+          // 鑾峰彇褰撳墠鐜妭璐熻矗浜�
+          switch (saveState === '3reject' ? this.currentStep - 1 : this.currentStep) {
+            case 0:
+              this.form.currentResponsible = this.form.submitOperatingPersonnel
+              break
+            case 1:
+              this.form.currentResponsible = this.form.departmentOperatingPersonnel
+              break
+            case 2:
+              this.form.currentResponsible = this.form.measuringRoomOperatingPersonnel
+              break
+            case 3:
+              this.form.currentResponsible = this.form.approvalOperatingPersonnel
+              break
+            default:
+              break
+          }
+          // 鑾峰彇褰撳墠鐘舵��
+          this.form.currentState = currentStepAction === 4 ? '鍏抽棴' : this.steps[currentStepAction]
+          this.form.deviceId = this.clickNodeVal.value
+          saveDeviceState(this.form).then(res => {
+            if (res.code == 200) {
+              this.$message.success('鎻愪氦鎴愬姛')
+              this.getDeviceStatePage(this.clickNodeVal.value)
+              this.dialogVisible = false
+              this.closeLoading()
+            }
+            this.closeLoading()
+          })
+        } else {
+          let step = this.steps[this.currentStep]
+          this.$message.warning(step + '  娴佺▼涓湁蹇呭~椤规湭濉紒');
+          this.closeLoading()
+        }
+      });
+    },
+    closeLoading() {
+      this.sumbitLoading1 = false
+      this.sumbitLoading2 = false
+      this.sumbitLoading3 = false
+    },
+    choiceStep(index) {
+      this.currentStepClick = index
+    },
+    openRecordAcceptance() {
+      // 鑾峰彇璁惧鍩虹淇℃伅
+      selectDeviceByCode({ id: this.clickNodeVal.value }).then(res => {
+        this.form.deviceName = res.data.deviceName
+        this.form.specificationModel = res.data.specificationModel
+        this.form.managementNumber = res.data.managementNumber
+        this.$nextTick(() => {
+          this.$refs['form'].clearValidate()
+        })
+      });
+      // 鑾峰彇璐熻矗浜轰俊鎭�
+      this.getUserList()
+    },
+    // 鑾峰彇璐熻矗浜轰俊鎭帴鍙�
+    getUserList() {
+      selectUserCondition().then(res => {
+        if (res.code == 200) {
+          this.responsibleOptions = res.data
+        }
+      })
+    },
+    // 鏌ョ湅
+    handleViewClick(row) {
+      this.form = { ...row }
+      // 濡傛灉绱㈠紩涓�6琛ㄧず鍏ㄩ儴閫氳繃
+      this.currentStep = this.steps.indexOf(this.form.currentState) === -1 ? 4 : this.steps.indexOf(this.form.currentState)
+      this.currentStepClick = this.currentStep === 4 ? 0 : this.currentStep
+      this.$nextTick(() => {
+        this.$refs['form'].clearValidate()
+      })
+      this.dialogVisible = true
+    },
+    // 瀵煎嚭
+    handleDownOne(row) {
+      this.outLoading = true
+      exportDeviceStatus({ deviceId: row.deviceId, processNumber: row.processNumber }).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '璁惧鍋�/鍚敤.doc')
+      })
+    },
+    // 鍒犻櫎
+    handleDeleteClick(row) {
+      this.$confirm('姝ゆ搷浣滃皢鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteDeviceState({ stateId: row.stateId }).then(res => {
+          if (res.code == 200) {
+            this.$message.success('鍒犻櫎鎴愬姛')
+            this.getDeviceStatePage(this.clickNodeVal.value)
+          }
+        })
+      }).catch(() => {
+        this.$message({
+          type: 'info',
+          message: '宸插彇娑堝垹闄�'
+        });
+      });
+    },
+    //瀵煎嚭
+    handleDown() {
+      this.outLoading = true
+      deviceStateExport({
+        deviceId: this.clickNodeVal.value,
+        processNumber: this.search.processNumber
+      }).then(res => {
+        this.outLoading = false
+        const blob = new Blob([res], { type: 'application/octet-stream' });
+        this.$download.saveAs(blob, '璁惧鍋滅敤/鍚敤.xlsx')
+      }).finally(() => {
+        this.outLoading = false
+      })
+    },
+    resetSearch() {
+      this.search = {
+        size: 20,
+        current: 1,
+        total: 0,
+        processNumber: '',
+      }
+      this.getDeviceStatePage(this.clickNodeVal.value);
+    },
+    getDeviceStatePage(deviceId) {
+      getDeviceStatePage({ deviceId, ...this.search }).then(res => {
+        if (res.code == 200) {
+          this.tableDatalist = res.data.records
+          this.search.total = res.data.total
+        }
+      })
+    }
+  },
+  watch: {
+    // 鐩戝惉鐐瑰嚮el-tree鐨勬暟鎹紝杩涜鏁版嵁鍒锋柊
+    clickNodeVal(newVal) {
+      if (newVal.value) {
+        this.componentData.entity.deviceId = this.clickNodeVal.value
+        this.entityCopy = this.HaveJson(this.componentData.entity)
+        this.getDeviceStatePage(newVal.value)
+      }
+    },
+    dialogVisible(newVal) {
+      if (!newVal) {
+        this.form = {
+        }
+        this.closeLoading()
+        this.currentStep = 0 // 姝ラ鏉℃樉绀虹鍑犳
+        this.currentStepClick = 0 // 鐐瑰嚮姝ラ鏉″彉鍖�
+        this.$refs['form'].clearValidate()
+      }
+    }
+  },
+}
+</script>
+
+<style scoped>
+.dialog-content {
+  max-height: 70vh;
+  /* 璁剧疆鏈�澶ч珮搴� */
+  overflow-y: auto;
+  /* 鍚敤鍨傜洿婊氬姩 */
+}
+
+h4 {
+  font-weight: 400;
+  font-size: 16px;
+  margin: 10px 0;
+}
+
+/*
+淇濆瓨鎻愪氦鎸夐挳鏍峰紡
+*/
+h4 .title {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+h4 .title .line {
+  display: inline-block;
+  width: 3px;
+  height: 16px;
+  background: #3A7BFA;
+  margin-right: 4px;
+}
+
+.tables {
+  width: 100%;
+  height: calc(100vh - 15em);
+}
+
+.el-from {
+  max-width: 400px;
+  margin: 0 auto;
+}
+
+.form-row {
+  display: flex;
+  justify-content: space-between;
+}
+
+
+.form-row .el-form-item {
+  flex: 1;
+  /* 姣忎釜琛ㄥ崟椤瑰崰鎹浉鍚屾瘮渚嬬殑绌洪棿 */
+  margin-right: 100px;
+  /* 鍙�夛細涓哄彸渚у厓绱犳坊鍔犻棿璺� */
+}
+
+/* 绉婚櫎鏈�鍚庝竴涓厓绱犵殑鍙宠竟璺� */
+.form-row .el-form-item:last-child {
+  margin-right: 0;
+
+}
+
+.search {
+  background-color: #fff;
+  margin: 10px 0;
+  display: flex;
+  align-items: center;
+  position: relative;
+}
+
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 40px;
+}
+
+.search_label {
+  width: 70px;
+  font-size: 14px;
+  text-align: right;
+}
+
+.search_input {
+  width: 70%;
+}
+
+.btns {
+  position: absolute;
+  right: 0;
+  top: 50%;
+  transform: translate(0, -50%);
+}
+
+.form .search_label {
+  width: 120px;
+}
+</style>

--
Gitblit v1.9.3