From bdd09aa9a747e0c30413873435854224d26ad8bb Mon Sep 17 00:00:00 2001
From: wyg <wu1555611@163.com>
Date: 星期一, 17 六月 2024 09:51:38 +0800
Subject: [PATCH] 新增基础设置basicData

---
 src/api/basicData/warehouse.js              |   44 +
 src/views/basicData/locationGroup/index.vue |  405 ++++++++++++++++
 src/api/basicData/location.js               |   44 +
 src/api/basicData/locationGroup.js          |   44 +
 src/views/basicData/location/index.vue      |  542 +++++++++++++++++++++
 src/views/basicData/warehouse/index.vue     |  418 ++++++++++++++++
 6 files changed, 1,497 insertions(+), 0 deletions(-)

diff --git a/src/api/basicData/location.js b/src/api/basicData/location.js
new file mode 100644
index 0000000..0c08dcb
--- /dev/null
+++ b/src/api/basicData/location.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ搴撲綅鍒楄〃
+export function listLocation(query) {
+  return request({
+    url: '/system/location/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ搴撲綅璇︾粏
+export function getLocation(locationId) {
+  return request({
+    url: '/system/location/' + locationId,
+    method: 'get'
+  })
+}
+
+// 鏂板搴撲綅
+export function addLocation(data) {
+  return request({
+    url: '/system/location',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼搴撲綅
+export function updateLocation(data) {
+  return request({
+    url: '/system/location',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎搴撲綅
+export function delLocation(locationId) {
+  return request({
+    url: '/system/location/' + locationId,
+    method: 'delete'
+  })
+}
diff --git a/src/api/basicData/locationGroup.js b/src/api/basicData/locationGroup.js
new file mode 100644
index 0000000..46ee300
--- /dev/null
+++ b/src/api/basicData/locationGroup.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ搴撲綅缁勫垪琛�
+export function listLocationGroup(query) {
+  return request({
+    url: '/system/locationGroup/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ搴撲綅缁勮缁�
+export function getLocationGroup(locationGroupId) {
+  return request({
+    url: '/system/locationGroup/' + locationGroupId,
+    method: 'get'
+  })
+}
+
+// 鏂板搴撲綅缁�
+export function addLocationGroup(data) {
+  return request({
+    url: '/system/locationGroup',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼搴撲綅缁�
+export function updateLocationGroup(data) {
+  return request({
+    url: '/system/locationGroup',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎搴撲綅缁�
+export function delLocationGroup(locationGroupId) {
+  return request({
+    url: '/system/locationGroup/' + locationGroupId,
+    method: 'delete'
+  })
+}
diff --git a/src/api/basicData/warehouse.js b/src/api/basicData/warehouse.js
new file mode 100644
index 0000000..03326e9
--- /dev/null
+++ b/src/api/basicData/warehouse.js
@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 鏌ヨ浠撳簱鍒楄〃
+export function listWarehouse(query) {
+  return request({
+    url: '/system/warehouse/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 鏌ヨ浠撳簱璇︾粏
+export function getWarehouse(warehouseId) {
+  return request({
+    url: '/system/warehouse/' + warehouseId,
+    method: 'get'
+  })
+}
+
+// 鏂板浠撳簱
+export function addWarehouse(data) {
+  return request({
+    url: '/system/warehouse',
+    method: 'post',
+    data: data
+  })
+}
+
+// 淇敼浠撳簱
+export function updateWarehouse(data) {
+  return request({
+    url: '/system/warehouse',
+    method: 'put',
+    data: data
+  })
+}
+
+// 鍒犻櫎浠撳簱
+export function delWarehouse(warehouseId) {
+  return request({
+    url: '/system/warehouse/' + warehouseId,
+    method: 'delete'
+  })
+}
diff --git a/src/views/basicData/location/index.vue b/src/views/basicData/location/index.vue
new file mode 100644
index 0000000..03ca361
--- /dev/null
+++ b/src/views/basicData/location/index.vue
@@ -0,0 +1,542 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="浠撳簱" prop="lgort">
+        <el-input
+          v-model="queryParams.lgort"
+          placeholder="璇疯緭鍏ヤ粨搴�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="鍚嶇О" prop="locationName">
+        <el-input
+          v-model="queryParams.locationName"
+          placeholder="璇疯緭鍏ュ悕绉�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="state">
+        <el-input
+          v-model="queryParams.state"
+          placeholder="璇疯緭鍏ョ姸鎬�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:location:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:location:edit']"
+        >淇敼</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:location:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:location:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="locationList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="搴撲綅ID" align="center" prop="locationId" v-if="true"/>
+      <el-table-column label="闅跺睘搴撲綅ID" align="center" prop="parentLocationId" />
+      <el-table-column label="浠撳簱" align="center" prop="lgort" />
+      <el-table-column label="搴撲綅搴忓彿" align="center" prop="locationNo" />
+      <el-table-column label="鍚嶇О" align="center" prop="locationName" />
+      <el-table-column label="宸ュ巶" align="center" prop="werks" />
+      <el-table-column label="绫诲瀷" align="center" prop="type" />
+      <el-table-column label="浣撶Н闄愬埗" align="center" prop="volumeRestriction" />
+      <el-table-column label="閲嶉噺闄愬埗" align="center" prop="weightLimit" />
+      <el-table-column label="绠辨暟闄愬埗" align="center" prop="containerNumberLimit" />
+      <el-table-column label="鏁伴噺闄愬埗" align="center" prop="quantitativeRestrictions" />
+      <el-table-column label="鎵樼洏闄愬埗" align="center" prop="trayLimit" />
+      <el-table-column label="闀垮害" align="center" prop="length" />
+      <el-table-column label="瀹�" align="center" prop="width" />
+      <el-table-column label="楂�" align="center" prop="height" />
+      <el-table-column label="鍧愭爣X" align="center" prop="coordinateX" />
+      <el-table-column label="鍧愭爣Y" align="center" prop="coordinateY" />
+      <el-table-column label="鍧愭爣Z" align="center" prop="coordinateZ" />
+      <el-table-column label="鍍忕礌X" align="center" prop="pixelX" />
+      <el-table-column label="鍍忕礌Y" align="center" prop="pixelY" />
+      <el-table-column label="绌洪棿灞傛暟" align="center" prop="paceLayer" />
+      <el-table-column label="1-鍏佽" align="center" prop="allowMixedProduct" />
+      <el-table-column label="1-鍏佽" align="center" prop="allowMixedProductLot" />
+      <el-table-column label="灞傜骇" align="center" prop="layer" />
+      <el-table-column label="1-瀛樺湪" align="center" prop="hasChild" />
+      <el-table-column label="璺緞" align="center" prop="path" />
+      <el-table-column label="鎻忚堪" align="center" prop="description" />
+      <el-table-column label="鐘舵��" align="center" prop="state" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉id" align="center" prop="lastUpdatedUserId" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉濮撳悕" align="center" prop="lastUpdatedUserName" />
+      <el-table-column label="鏈�鍚庢洿鏂版椂闂�" align="center" prop="lastUpdatedDateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.lastUpdatedDateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:location:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:location:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀瑰簱浣嶅璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="闅跺睘搴撲綅ID" prop="parentLocationId">
+          <el-input v-model="form.parentLocationId" placeholder="璇疯緭鍏ラ毝灞炲簱浣岻D" />
+        </el-form-item>
+        <el-form-item label="浠撳簱" prop="lgort">
+          <el-input v-model="form.lgort" placeholder="璇疯緭鍏ヤ粨搴�" />
+        </el-form-item>
+        <el-form-item label="搴撲綅搴忓彿" prop="locationNo">
+          <el-input v-model="form.locationNo" placeholder="璇疯緭鍏ュ簱浣嶅簭鍙�" />
+        </el-form-item>
+        <el-form-item label="鍚嶇О" prop="locationName">
+          <el-input v-model="form.locationName" placeholder="璇疯緭鍏ュ悕绉�" />
+        </el-form-item>
+        <el-form-item label="宸ュ巶" prop="werks">
+          <el-input v-model="form.werks" placeholder="璇疯緭鍏ュ伐鍘�" />
+        </el-form-item>
+        <el-form-item label="浣撶Н闄愬埗" prop="volumeRestriction">
+          <el-input v-model="form.volumeRestriction" placeholder="璇疯緭鍏ヤ綋绉檺鍒�" />
+        </el-form-item>
+        <el-form-item label="閲嶉噺闄愬埗" prop="weightLimit">
+          <el-input v-model="form.weightLimit" placeholder="璇疯緭鍏ラ噸閲忛檺鍒�" />
+        </el-form-item>
+        <el-form-item label="绠辨暟闄愬埗" prop="containerNumberLimit">
+          <el-input v-model="form.containerNumberLimit" placeholder="璇疯緭鍏ョ鏁伴檺鍒�" />
+        </el-form-item>
+        <el-form-item label="鏁伴噺闄愬埗" prop="quantitativeRestrictions">
+          <el-input v-model="form.quantitativeRestrictions" placeholder="璇疯緭鍏ユ暟閲忛檺鍒�" />
+        </el-form-item>
+        <el-form-item label="鎵樼洏闄愬埗" prop="trayLimit">
+          <el-input v-model="form.trayLimit" placeholder="璇疯緭鍏ユ墭鐩橀檺鍒�" />
+        </el-form-item>
+        <el-form-item label="闀垮害" prop="length">
+          <el-input v-model="form.length" placeholder="璇疯緭鍏ラ暱搴�" />
+        </el-form-item>
+        <el-form-item label="瀹�" prop="width">
+          <el-input v-model="form.width" placeholder="璇疯緭鍏ュ" />
+        </el-form-item>
+        <el-form-item label="楂�" prop="height">
+          <el-input v-model="form.height" placeholder="璇疯緭鍏ラ珮" />
+        </el-form-item>
+        <el-form-item label="鍧愭爣X" prop="coordinateX">
+          <el-input v-model="form.coordinateX" placeholder="璇疯緭鍏ュ潗鏍嘪" />
+        </el-form-item>
+        <el-form-item label="鍧愭爣Y" prop="coordinateY">
+          <el-input v-model="form.coordinateY" placeholder="璇疯緭鍏ュ潗鏍嘫" />
+        </el-form-item>
+        <el-form-item label="鍧愭爣Z" prop="coordinateZ">
+          <el-input v-model="form.coordinateZ" placeholder="璇疯緭鍏ュ潗鏍嘮" />
+        </el-form-item>
+        <el-form-item label="鍍忕礌X" prop="pixelX">
+          <el-input v-model="form.pixelX" placeholder="璇疯緭鍏ュ儚绱燲" />
+        </el-form-item>
+        <el-form-item label="鍍忕礌Y" prop="pixelY">
+          <el-input v-model="form.pixelY" placeholder="璇疯緭鍏ュ儚绱燳" />
+        </el-form-item>
+        <el-form-item label="绌洪棿灞傛暟" prop="paceLayer">
+          <el-input v-model="form.paceLayer" placeholder="璇疯緭鍏ョ┖闂村眰鏁�" />
+        </el-form-item>
+        <el-form-item label="1-鍏佽" prop="allowMixedProduct">
+          <el-input v-model="form.allowMixedProduct" placeholder="璇疯緭鍏�1-鍏佽" />
+        </el-form-item>
+        <el-form-item label="1-鍏佽" prop="allowMixedProductLot">
+          <el-input v-model="form.allowMixedProductLot" placeholder="璇疯緭鍏�1-鍏佽" />
+        </el-form-item>
+        <el-form-item label="灞傜骇" prop="layer">
+          <el-input v-model="form.layer" placeholder="璇疯緭鍏ュ眰绾�" />
+        </el-form-item>
+        <el-form-item label="1-瀛樺湪" prop="hasChild">
+          <el-input v-model="form.hasChild" placeholder="璇疯緭鍏�1-瀛樺湪" />
+        </el-form-item>
+        <el-form-item label="璺緞" prop="path">
+          <el-input v-model="form.path" placeholder="璇疯緭鍏ヨ矾寰�" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="description">
+          <el-input v-model="form.description" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="state">
+          <el-input v-model="form.state" placeholder="璇疯緭鍏ョ姸鎬�" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉id" prop="lastUpdatedUserId">
+          <el-input v-model="form.lastUpdatedUserId" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉id" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉濮撳悕" prop="lastUpdatedUserName">
+          <el-input v-model="form.lastUpdatedUserName" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉濮撳悕" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂版椂闂�" prop="lastUpdatedDateTime">
+          <el-date-picker clearable
+            v-model="form.lastUpdatedDateTime"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="璇烽�夋嫨鏈�鍚庢洿鏂版椂闂�">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listLocation, getLocation, delLocation, addLocation, updateLocation } from "@/api/basicData/location";
+
+export default {
+  name: "Location",
+  data() {
+    return {
+      // 鎸夐挳loading
+      buttonLoading: false,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 搴撲綅琛ㄦ牸鏁版嵁
+      locationList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        lgort: undefined,
+        locationName: undefined,
+        type: undefined,
+        state: undefined,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        locationId: [
+          { required: true, message: "搴撲綅ID涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        parentLocationId: [
+          { required: true, message: "闅跺睘搴撲綅ID涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lgort: [
+          { required: true, message: "浠撳簱涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        locationNo: [
+          { required: true, message: "搴撲綅搴忓彿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        locationName: [
+          { required: true, message: "鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        werks: [
+          { required: true, message: "宸ュ巶涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        type: [
+          { required: true, message: "绫诲瀷涓嶈兘涓虹┖", trigger: "change" }
+        ],
+        volumeRestriction: [
+          { required: true, message: "浣撶Н闄愬埗涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        weightLimit: [
+          { required: true, message: "閲嶉噺闄愬埗涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        containerNumberLimit: [
+          { required: true, message: "绠辨暟闄愬埗涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        quantitativeRestrictions: [
+          { required: true, message: "鏁伴噺闄愬埗涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        trayLimit: [
+          { required: true, message: "鎵樼洏闄愬埗涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        length: [
+          { required: true, message: "闀垮害涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        width: [
+          { required: true, message: "瀹戒笉鑳戒负绌�", trigger: "blur" }
+        ],
+        height: [
+          { required: true, message: "楂樹笉鑳戒负绌�", trigger: "blur" }
+        ],
+        coordinateX: [
+          { required: true, message: "鍧愭爣X涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        coordinateY: [
+          { required: true, message: "鍧愭爣Y涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        coordinateZ: [
+          { required: true, message: "鍧愭爣Z涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        pixelX: [
+          { required: true, message: "鍍忕礌X涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        pixelY: [
+          { required: true, message: "鍍忕礌Y涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        paceLayer: [
+          { required: true, message: "绌洪棿灞傛暟涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        allowMixedProduct: [
+          { required: true, message: "1-鍏佽涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        allowMixedProductLot: [
+          { required: true, message: "1-鍏佽涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        layer: [
+          { required: true, message: "灞傜骇涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        hasChild: [
+          { required: true, message: "1-瀛樺湪涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        path: [
+          { required: true, message: "璺緞涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        description: [
+          { required: true, message: "鎻忚堪涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        state: [
+          { required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }
+        ],
+        displayOrder: [
+          { required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserId: [
+          { required: true, message: "鍒涘缓浜篿d涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserName: [
+          { required: true, message: "鍒涘缓浜哄鍚嶄笉鑳戒负绌�", trigger: "blur" }
+        ],
+        createdDateTime: [
+          { required: true, message: "鍒涘缓鏃ユ湡鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserId: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserName: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedDateTime: [
+          { required: true, message: "鏈�鍚庢洿鏂版椂闂翠笉鑳戒负绌�", trigger: "blur" }
+        ],
+        isDeleted: [
+          { required: true, message: "鏄惁鍒犻櫎涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ搴撲綅鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listLocation(this.queryParams).then(response => {
+        this.locationList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        locationId: undefined,
+        parentLocationId: undefined,
+        lgort: undefined,
+        locationNo: undefined,
+        locationName: undefined,
+        werks: undefined,
+        type: undefined,
+        volumeRestriction: undefined,
+        weightLimit: undefined,
+        containerNumberLimit: undefined,
+        quantitativeRestrictions: undefined,
+        trayLimit: undefined,
+        length: undefined,
+        width: undefined,
+        height: undefined,
+        coordinateX: undefined,
+        coordinateY: undefined,
+        coordinateZ: undefined,
+        pixelX: undefined,
+        pixelY: undefined,
+        paceLayer: undefined,
+        allowMixedProduct: undefined,
+        allowMixedProductLot: undefined,
+        layer: undefined,
+        hasChild: undefined,
+        path: undefined,
+        description: undefined,
+        state: undefined,
+        displayOrder: undefined,
+        createdUserId: undefined,
+        createdUserName: undefined,
+        createdDateTime: undefined,
+        lastUpdatedUserId: undefined,
+        lastUpdatedUserName: undefined,
+        lastUpdatedDateTime: undefined,
+        isDeleted: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.locationId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞搴撲綅";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.loading = true;
+      this.reset();
+      const locationId = row.locationId || this.ids
+      getLocation(locationId).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼搴撲綅";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.locationId != null) {
+            updateLocation(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addLocation(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const locationIds = row.locationId || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎搴撲綅缂栧彿涓�"' + locationIds + '"鐨勬暟鎹」锛�').then(() => {
+        this.loading = true;
+        return delLocation(locationIds);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/location/export', {
+        ...this.queryParams
+      }, `location_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/src/views/basicData/locationGroup/index.vue b/src/views/basicData/locationGroup/index.vue
new file mode 100644
index 0000000..86847a6
--- /dev/null
+++ b/src/views/basicData/locationGroup/index.vue
@@ -0,0 +1,405 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="搴撲綅缁勭紪鍙�" prop="locationGroupNo">
+        <el-input
+          v-model="queryParams.locationGroupNo"
+          placeholder="璇疯緭鍏ュ簱浣嶇粍缂栧彿"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="搴撲綅缁勫悕绉�" prop="locationGroupName">
+        <el-input
+          v-model="queryParams.locationGroupName"
+          placeholder="璇疯緭鍏ュ簱浣嶇粍鍚嶇О"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="浠撳簱缂栧彿" prop="lgort">
+        <el-input
+          v-model="queryParams.lgort"
+          placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:locationGroup:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:locationGroup:edit']"
+        >淇敼</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:locationGroup:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:locationGroup:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="locationGroupList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="搴撲綅缁処D" align="center" prop="locationGroupId" v-if="true"/>
+      <el-table-column label="搴撲綅缁勭紪鍙�" align="center" prop="locationGroupNo" />
+      <el-table-column label="宸ュ巶" align="center" prop="werks" />
+      <el-table-column label="搴撲綅缁勫悕绉�" align="center" prop="locationGroupName" />
+      <el-table-column label="浠撳簱缂栧彿" align="center" prop="lgort" />
+      <el-table-column label="鎻忚堪" align="center" prop="description" />
+      <el-table-column label="鐘舵��" align="center" prop="state" />
+      <el-table-column label="瀹℃牳鐘舵��" align="center" prop="auditState" />
+      <el-table-column label="瀹℃牳浜篒D" align="center" prop="auditUserId" />
+      <el-table-column label="瀹℃牳浜哄鍚�" align="center" prop="auditUserName" />
+      <el-table-column label="瀹℃牳鏃ユ湡鏃堕棿" align="center" prop="auditDateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.auditDateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="瀹℃牳鎰忚" align="center" prop="auditOpinion" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉id" align="center" prop="lastUpdatedUserId" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉濮撳悕" align="center" prop="lastUpdatedUserName" />
+      <el-table-column label="鏈�鍚庢洿鏂版椂闂�" align="center" prop="lastUpdatedDateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.lastUpdatedDateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:locationGroup:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:locationGroup:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀瑰簱浣嶇粍瀵硅瘽妗� -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="搴撲綅缁勭紪鍙�" prop="locationGroupNo">
+          <el-input v-model="form.locationGroupNo" placeholder="璇疯緭鍏ュ簱浣嶇粍缂栧彿" />
+        </el-form-item>
+        <el-form-item label="宸ュ巶" prop="werks">
+          <el-input v-model="form.werks" placeholder="璇疯緭鍏ュ伐鍘�" />
+        </el-form-item>
+        <el-form-item label="搴撲綅缁勫悕绉�" prop="locationGroupName">
+          <el-input v-model="form.locationGroupName" placeholder="璇疯緭鍏ュ簱浣嶇粍鍚嶇О" />
+        </el-form-item>
+        <el-form-item label="浠撳簱缂栧彿" prop="lgort">
+          <el-input v-model="form.lgort" placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="description">
+          <el-input v-model="form.description" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="state">
+          <el-input v-model="form.state" placeholder="璇疯緭鍏ョ姸鎬�" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉id" prop="lastUpdatedUserId">
+          <el-input v-model="form.lastUpdatedUserId" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉id" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉濮撳悕" prop="lastUpdatedUserName">
+          <el-input v-model="form.lastUpdatedUserName" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉濮撳悕" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂版椂闂�" prop="lastUpdatedDateTime">
+          <el-date-picker clearable
+            v-model="form.lastUpdatedDateTime"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="璇烽�夋嫨鏈�鍚庢洿鏂版椂闂�">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listLocationGroup, getLocationGroup, delLocationGroup, addLocationGroup, updateLocationGroup } from "@/api/basicData/locationGroup";
+
+export default {
+  name: "LocationGroup",
+  data() {
+    return {
+      // 鎸夐挳loading
+      buttonLoading: false,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 搴撲綅缁勮〃鏍兼暟鎹�
+      locationGroupList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        locationGroupNo: undefined,
+        locationGroupName: undefined,
+        lgort: undefined,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        locationGroupId: [
+          { required: true, message: "搴撲綅缁処D涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        locationGroupNo: [
+          { required: true, message: "搴撲綅缁勭紪鍙蜂笉鑳戒负绌�", trigger: "blur" }
+        ],
+        werks: [
+          { required: true, message: "宸ュ巶涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        locationGroupName: [
+          { required: true, message: "搴撲綅缁勫悕绉颁笉鑳戒负绌�", trigger: "blur" }
+        ],
+        lgort: [
+          { required: true, message: "浠撳簱缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        description: [
+          { required: true, message: "鎻忚堪涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        state: [
+          { required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }
+        ],
+        displayOrder: [
+          { required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserId: [
+          { required: true, message: "鍒涘缓浜篿d涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserName: [
+          { required: true, message: "鍒涘缓浜哄鍚嶄笉鑳戒负绌�", trigger: "blur" }
+        ],
+        createdDateTime: [
+          { required: true, message: "鍒涘缓鏃ユ湡鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        auditState: [
+          { required: true, message: "瀹℃牳鐘舵�佷笉鑳戒负绌�", trigger: "blur" }
+        ],
+        auditUserId: [
+          { required: true, message: "瀹℃牳浜篒D涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        auditUserName: [
+          { required: true, message: "瀹℃牳浜哄鍚嶄笉鑳戒负绌�", trigger: "blur" }
+        ],
+        auditDateTime: [
+          { required: true, message: "瀹℃牳鏃ユ湡鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        auditOpinion: [
+          { required: true, message: "瀹℃牳鎰忚涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserId: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserName: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedDateTime: [
+          { required: true, message: "鏈�鍚庢洿鏂版椂闂翠笉鑳戒负绌�", trigger: "blur" }
+        ],
+        isDeleted: [
+          { required: true, message: "鏄惁鍒犻櫎涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ搴撲綅缁勫垪琛� */
+    getList() {
+      this.loading = true;
+      listLocationGroup(this.queryParams).then(response => {
+        this.locationGroupList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        locationGroupId: undefined,
+        locationGroupNo: undefined,
+        werks: undefined,
+        locationGroupName: undefined,
+        lgort: undefined,
+        description: undefined,
+        state: undefined,
+        displayOrder: undefined,
+        createdUserId: undefined,
+        createdUserName: undefined,
+        createdDateTime: undefined,
+        auditState: undefined,
+        auditUserId: undefined,
+        auditUserName: undefined,
+        auditDateTime: undefined,
+        auditOpinion: undefined,
+        lastUpdatedUserId: undefined,
+        lastUpdatedUserName: undefined,
+        lastUpdatedDateTime: undefined,
+        isDeleted: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.locationGroupId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞搴撲綅缁�";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.loading = true;
+      this.reset();
+      const locationGroupId = row.locationGroupId || this.ids
+      getLocationGroup(locationGroupId).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼搴撲綅缁�";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.locationGroupId != null) {
+            updateLocationGroup(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addLocationGroup(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const locationGroupIds = row.locationGroupId || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎搴撲綅缁勭紪鍙蜂负"' + locationGroupIds + '"鐨勬暟鎹」锛�').then(() => {
+        this.loading = true;
+        return delLocationGroup(locationGroupIds);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/locationGroup/export', {
+        ...this.queryParams
+      }, `locationGroup_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>
diff --git a/src/views/basicData/warehouse/index.vue b/src/views/basicData/warehouse/index.vue
new file mode 100644
index 0000000..a62d7f3
--- /dev/null
+++ b/src/views/basicData/warehouse/index.vue
@@ -0,0 +1,418 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="鍚嶇О" prop="warehouseName">
+        <el-input
+          v-model="queryParams.warehouseName"
+          placeholder="璇疯緭鍏ュ悕绉�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="宸ュ巶" prop="werks">
+        <el-input
+          v-model="queryParams.werks"
+          placeholder="璇疯緭鍏ュ伐鍘�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="鐘舵��" prop="state">
+        <el-input
+          v-model="queryParams.state"
+          placeholder="璇疯緭鍏ョ姸鎬�"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:warehouse:add']"
+        >鏂板</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:warehouse:edit']"
+        >淇敼</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:warehouse:remove']"
+        >鍒犻櫎</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:warehouse:export']"
+        >瀵煎嚭</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="warehouseList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="浠撳簱ID" align="center" prop="warehouseId" v-if="true"/>
+      <el-table-column label="浠撳簱缂栧彿" align="center" prop="lgort" />
+      <el-table-column label="鍚嶇О" align="center" prop="warehouseName" />
+      <el-table-column label="宸ュ巶" align="center" prop="werks" />
+      <el-table-column label="绫诲埆" align="center" prop="type" />
+      <el-table-column label="0,涓嶅惎鐢�
+            1,鍚敤" align="center" prop="isUseLocation" />
+      <el-table-column label="绠$悊鍛業D" align="center" prop="userId" />
+      <el-table-column label="绠$悊鍛樼數璇�" align="center" prop="userPhone" />
+      <el-table-column label="鍧愭爣X" align="center" prop="coordinateX" />
+      <el-table-column label="鍧愭爣Y" align="center" prop="coordinateY" />
+      <el-table-column label="鎻忚堪" align="center" prop="description" />
+      <el-table-column label="鐘舵��" align="center" prop="state" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉id" align="center" prop="lastUpdatedUserId" />
+      <el-table-column label="鏈�鍚庢洿鏂颁汉濮撳悕" align="center" prop="lastUpdatedUserName" />
+      <el-table-column label="鏈�鍚庢洿鏂版椂闂�" align="center" prop="lastUpdatedDateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.lastUpdatedDateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:warehouse:edit']"
+          >淇敼</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:warehouse:remove']"
+          >鍒犻櫎</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 娣诲姞鎴栦慨鏀逛粨搴撳璇濇 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="浠撳簱缂栧彿" prop="lgort">
+          <el-input v-model="form.lgort" placeholder="璇疯緭鍏ヤ粨搴撶紪鍙�" />
+        </el-form-item>
+        <el-form-item label="鍚嶇О" prop="warehouseName">
+          <el-input v-model="form.warehouseName" placeholder="璇疯緭鍏ュ悕绉�" />
+        </el-form-item>
+        <el-form-item label="宸ュ巶" prop="werks">
+          <el-input v-model="form.werks" placeholder="璇疯緭鍏ュ伐鍘�" />
+        </el-form-item>
+        <el-form-item label="0,涓嶅惎鐢�
+            1,鍚敤" prop="isUseLocation">
+          <el-input v-model="form.isUseLocation" placeholder="璇疯緭鍏�0,涓嶅惎鐢�
+            1,鍚敤" />
+        </el-form-item>
+        <el-form-item label="绠$悊鍛業D" prop="userId">
+          <el-input v-model="form.userId" placeholder="璇疯緭鍏ョ鐞嗗憳ID" />
+        </el-form-item>
+        <el-form-item label="绠$悊鍛樼數璇�" prop="userPhone">
+          <el-input v-model="form.userPhone" placeholder="璇疯緭鍏ョ鐞嗗憳鐢佃瘽" />
+        </el-form-item>
+        <el-form-item label="鍧愭爣X" prop="coordinateX">
+          <el-input v-model="form.coordinateX" placeholder="璇疯緭鍏ュ潗鏍嘪" />
+        </el-form-item>
+        <el-form-item label="鍧愭爣Y" prop="coordinateY">
+          <el-input v-model="form.coordinateY" placeholder="璇疯緭鍏ュ潗鏍嘫" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪" prop="description">
+          <el-input v-model="form.description" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鐘舵��" prop="state">
+          <el-input v-model="form.state" placeholder="璇疯緭鍏ョ姸鎬�" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉id" prop="lastUpdatedUserId">
+          <el-input v-model="form.lastUpdatedUserId" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉id" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂颁汉濮撳悕" prop="lastUpdatedUserName">
+          <el-input v-model="form.lastUpdatedUserName" placeholder="璇疯緭鍏ユ渶鍚庢洿鏂颁汉濮撳悕" />
+        </el-form-item>
+        <el-form-item label="鏈�鍚庢洿鏂版椂闂�" prop="lastUpdatedDateTime">
+          <el-date-picker clearable
+            v-model="form.lastUpdatedDateTime"
+            type="datetime"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="璇烽�夋嫨鏈�鍚庢洿鏂版椂闂�">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button :loading="buttonLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+        <el-button @click="cancel">鍙� 娑�</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listWarehouse, getWarehouse, delWarehouse, addWarehouse, updateWarehouse } from "@/api/basicData/warehouse";
+
+export default {
+  name: "Warehouse",
+  data() {
+    return {
+      // 鎸夐挳loading
+      buttonLoading: false,
+      // 閬僵灞�
+      loading: true,
+      // 閫変腑鏁扮粍
+      ids: [],
+      // 闈炲崟涓鐢�
+      single: true,
+      // 闈炲涓鐢�
+      multiple: true,
+      // 鏄剧ず鎼滅储鏉′欢
+      showSearch: true,
+      // 鎬绘潯鏁�
+      total: 0,
+      // 浠撳簱琛ㄦ牸鏁版嵁
+      warehouseList: [],
+      // 寮瑰嚭灞傛爣棰�
+      title: "",
+      // 鏄惁鏄剧ず寮瑰嚭灞�
+      open: false,
+      // 鏌ヨ鍙傛暟
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        warehouseName: undefined,
+        werks: undefined,
+        type: undefined,
+        state: undefined,
+      },
+      // 琛ㄥ崟鍙傛暟
+      form: {},
+      // 琛ㄥ崟鏍¢獙
+      rules: {
+        warehouseId: [
+          { required: true, message: "浠撳簱ID涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lgort: [
+          { required: true, message: "浠撳簱缂栧彿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        warehouseName: [
+          { required: true, message: "鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        werks: [
+          { required: true, message: "宸ュ巶涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        type: [
+          { required: true, message: "绫诲埆涓嶈兘涓虹┖", trigger: "change" }
+        ],
+        // isUseLocation: [
+        //   { required: true, message: "0,涓嶅惎鐢�
+        //     1,鍚敤涓嶈兘涓虹┖", trigger: "blur" }
+        // ],
+        userId: [
+          { required: true, message: "绠$悊鍛業D涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        userPhone: [
+          { required: true, message: "绠$悊鍛樼數璇濅笉鑳戒负绌�", trigger: "blur" }
+        ],
+        coordinateX: [
+          { required: true, message: "鍧愭爣X涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        coordinateY: [
+          { required: true, message: "鍧愭爣Y涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        description: [
+          { required: true, message: "鎻忚堪涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        state: [
+          { required: true, message: "鐘舵�佷笉鑳戒负绌�", trigger: "blur" }
+        ],
+        displayOrder: [
+          { required: true, message: "鎺掑簭涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserId: [
+          { required: true, message: "鍒涘缓浜篿d涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        createdUserName: [
+          { required: true, message: "鍒涘缓浜哄鍚嶄笉鑳戒负绌�", trigger: "blur" }
+        ],
+        createdDateTime: [
+          { required: true, message: "鍒涘缓鏃ユ湡鏃堕棿涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserId: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉id涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedUserName: [
+          { required: true, message: "鏈�鍚庢洿鏂颁汉濮撳悕涓嶈兘涓虹┖", trigger: "blur" }
+        ],
+        lastUpdatedDateTime: [
+          { required: true, message: "鏈�鍚庢洿鏂版椂闂翠笉鑳戒负绌�", trigger: "blur" }
+        ],
+        isDeleted: [
+          { required: true, message: "鏄惁鍒犻櫎涓嶈兘涓虹┖", trigger: "blur" }
+        ]
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 鏌ヨ浠撳簱鍒楄〃 */
+    getList() {
+      this.loading = true;
+      listWarehouse(this.queryParams).then(response => {
+        this.warehouseList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 鍙栨秷鎸夐挳
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 琛ㄥ崟閲嶇疆
+    reset() {
+      this.form = {
+        warehouseId: undefined,
+        lgort: undefined,
+        warehouseName: undefined,
+        werks: undefined,
+        type: undefined,
+        isUseLocation: undefined,
+        userId: undefined,
+        userPhone: undefined,
+        coordinateX: undefined,
+        coordinateY: undefined,
+        description: undefined,
+        state: undefined,
+        displayOrder: undefined,
+        createdUserId: undefined,
+        createdUserName: undefined,
+        createdDateTime: undefined,
+        lastUpdatedUserId: undefined,
+        lastUpdatedUserName: undefined,
+        lastUpdatedDateTime: undefined,
+        isDeleted: undefined
+      };
+      this.resetForm("form");
+    },
+    /** 鎼滅储鎸夐挳鎿嶄綔 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 閲嶇疆鎸夐挳鎿嶄綔 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 澶氶�夋閫変腑鏁版嵁
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.warehouseId)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 鏂板鎸夐挳鎿嶄綔 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "娣诲姞浠撳簱";
+    },
+    /** 淇敼鎸夐挳鎿嶄綔 */
+    handleUpdate(row) {
+      this.loading = true;
+      this.reset();
+      const warehouseId = row.warehouseId || this.ids
+      getWarehouse(warehouseId).then(response => {
+        this.loading = false;
+        this.form = response.data;
+        this.open = true;
+        this.title = "淇敼浠撳簱";
+      });
+    },
+    /** 鎻愪氦鎸夐挳 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.buttonLoading = true;
+          if (this.form.warehouseId != null) {
+            updateWarehouse(this.form).then(response => {
+              this.$modal.msgSuccess("淇敼鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          } else {
+            addWarehouse(this.form).then(response => {
+              this.$modal.msgSuccess("鏂板鎴愬姛");
+              this.open = false;
+              this.getList();
+            }).finally(() => {
+              this.buttonLoading = false;
+            });
+          }
+        }
+      });
+    },
+    /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+    handleDelete(row) {
+      const warehouseIds = row.warehouseId || this.ids;
+      this.$modal.confirm('鏄惁纭鍒犻櫎浠撳簱缂栧彿涓�"' + warehouseIds + '"鐨勬暟鎹」锛�').then(() => {
+        this.loading = true;
+        return delWarehouse(warehouseIds);
+      }).then(() => {
+        this.loading = false;
+        this.getList();
+        this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+      }).catch(() => {
+      }).finally(() => {
+        this.loading = false;
+      });
+    },
+    /** 瀵煎嚭鎸夐挳鎿嶄綔 */
+    handleExport() {
+      this.download('system/warehouse/export', {
+        ...this.queryParams
+      }, `warehouse_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

--
Gitblit v1.9.3