wyg
2024-06-17 44f5fadd6a669405cd8a7608aa510bd62688a750
去除若依化
已修改17个文件
已添加1个文件
已删除2个文件
1629 ■■■■ 文件已修改
.env.development 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/RuoYi/Doc/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/RuoYi/Git/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/AppMain.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/Logo.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/location/index.vue 565 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/location/linshi.vue 547 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/locationGroup/index.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/warehouse/index.vue 129 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/index.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/login.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/register.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/dict/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/role/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/user/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tool/gen/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -1,10 +1,10 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = RuoYi-Flowable-Plus后台管理系统
VUE_APP_TITLE = é’‰ä¹åŽå°ç®¡ç†ç³»ç»Ÿ
# å¼€å‘环境配置
ENV = 'development'
# è‹¥ä¾ç®¡ç†ç³»ç»Ÿ/开发环境
# ç®¡ç†ç³»ç»Ÿ/开发环境
VUE_APP_BASE_API = '/dev-api'
# åº”用访问路径 ä¾‹å¦‚使用前缀 /admin/
.env.production
@@ -1,10 +1,10 @@
# é¡µé¢æ ‡é¢˜
VUE_APP_TITLE = RuoYi-Flowable-Plus后台管理系统
VUE_APP_TITLE = é’‰ä¹åŽå°ç®¡ç†ç³»ç»Ÿ
# ç”Ÿäº§çŽ¯å¢ƒé…ç½®
ENV = 'production'
# è‹¥ä¾ç®¡ç†ç³»ç»Ÿ/生产环境
# ç®¡ç†ç³»ç»Ÿ/生产环境
VUE_APP_BASE_API = '/prod-api'
# åº”用访问路径 ä¾‹å¦‚使用前缀 /admin/
src/components/RuoYi/Doc/index.vue
ÎļþÒÑɾ³ý
src/components/RuoYi/Git/index.vue
ÎļþÒÑɾ³ý
src/layout/components/AppMain.vue
@@ -10,29 +10,27 @@
</template>
<script>
import iframeToggle from "./IframeToggle/index"
import iframeToggle from "./IframeToggle/index";
export default {
  name: 'AppMain',
  name: "AppMain",
  components: { iframeToggle },
  computed: {
    cachedViews() {
      return this.$store.state.tagsView.cachedViews
      return this.$store.state.tagsView.cachedViews;
    },
    key() {
      return this.$route.path
    }
  }
}
      return this.$route.path;
    },
  },
};
</script>
<style lang="scss" scoped>
.app-main {
  /* 50= navbar  50  */
  min-height: calc(100vh - 50px);
  height: calc(100vh - 84px);
  width: 100%;
  position: relative;
  overflow: hidden;
}
.fixed-header + .app-main {
src/layout/components/Navbar.vue
@@ -6,28 +6,7 @@
    <top-nav id="topmenu-container" class="topmenu-container" v-if="topNav"/>
    <div class="right-menu">
      <template v-if="device!=='mobile'">
        <el-tooltip content="驰骋BPM" effect="dark" placement="bottom">
          <a href="http://ccflow.org/?frm=KonBAI" target="_blank" class="right-menu-item hover-effect">驰骋BPM</a>
        </el-tooltip>
        <search id="header-search" class="right-menu-item" />
        <el-tooltip content="源码地址" effect="dark" placement="bottom">
          <ruo-yi-git id="dl-git" class="right-menu-item hover-effect" />
        </el-tooltip>
        <el-tooltip content="文档地址" effect="dark" placement="bottom">
          <ruo-yi-doc id="dl-doc" class="right-menu-item hover-effect" />
        </el-tooltip>
        <screenfull id="screenfull" class="right-menu-item hover-effect" />
        <el-tooltip content="布局大小" effect="dark" placement="bottom">
          <size-select id="size-select" class="right-menu-item hover-effect" />
        </el-tooltip>
      </template>
      <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
        <div class="avatar-wrapper">
@@ -38,9 +17,9 @@
          <router-link to="/user/profile">
            <el-dropdown-item>个人中心</el-dropdown-item>
          </router-link>
          <el-dropdown-item @click.native="setting = true">
          <!-- <el-dropdown-item @click.native="setting = true">
            <span>布局设置</span>
          </el-dropdown-item>
          </el-dropdown-item> -->
          <el-dropdown-item divided @click.native="logout">
            <span>退出登录</span>
          </el-dropdown-item>
@@ -56,10 +35,9 @@
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
import Screenfull from '@/components/Screenfull'
import SizeSelect from '@/components/SizeSelect'
// import SizeSelect from '@/components/SizeSelect'
import Search from '@/components/HeaderSearch'
import RuoYiGit from '@/components/RuoYi/Git'
import RuoYiDoc from '@/components/RuoYi/Doc'
export default {
  components: {
@@ -67,10 +45,8 @@
    TopNav,
    Hamburger,
    Screenfull,
    SizeSelect,
    // SizeSelect,
    Search,
    RuoYiGit,
    RuoYiDoc
  },
  computed: {
    ...mapGetters([
src/layout/components/Sidebar/Logo.vue
@@ -35,7 +35,7 @@
  },
  data() {
    return {
      title: 'RuoYi-Flowable-Plus',
      title: '钉乐后台管理系统',
      logo: logoImg
    }
  }
src/router/index.js
@@ -140,7 +140,7 @@
    permissions: ['system:dict:list'],
    children: [
      {
        path: 'index/:dictId(\\d+)',
        path: 'index/:dictId([a-zA-Z0-9]+)',
        component: () => import('@/views/system/dict/data'),
        name: 'Data',
        meta: { title: '字典数据', activeMenu: '/system/dict' }
src/views/basicData/location/index.vue
@@ -1,542 +1,41 @@
<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="请输入隶属库位ID" />
        </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="请输入坐标X" />
        </el-form-item>
        <el-form-item label="坐标Y" prop="coordinateY">
          <el-input v-model="form.coordinateY" placeholder="请输入坐标Y" />
        </el-form-item>
        <el-form-item label="坐标Z" prop="coordinateZ">
          <el-input v-model="form.coordinateZ" placeholder="请输入坐标Z" />
        </el-form-item>
        <el-form-item label="像素X" prop="pixelX">
          <el-input v-model="form.pixelX" placeholder="请输入像素X" />
        </el-form-item>
        <el-form-item label="像素Y" prop="pixelY">
          <el-input v-model="form.pixelY" placeholder="请输入像素Y" />
        </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 class="box">
    <el-card class="box-card1">
  <div v-for="o in 4" :key="o" class="text item">
    {{'列表内容 ' + o }}
      </div>
    </el-dialog>
</el-card>
<el-card class="box-card2">
  <div v-for="o in 4" :key="o" class="text item">
    {{'列表内容 ' + o }}
  </div>
</el-card>
  </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: "创建人id不能为空", 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>
<style scoped>
.box{
  width: 100%;
  height: calc(100vh - 124px);
  display: flex;
  padding: 20px;
}
.box-card1{
  width: 20%;
  height: 100%;
  background-color: #4b0f0f;
}
.box-card2{
  width: 80%;
  height: 100%;
  background-color: #58c8eb;
}
</style>
src/views/basicData/location/linshi.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,547 @@
<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" border :data="locationList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
        <el-table-column
       label="序号"
      type="index"
      fixed
      width="50" />
      <!-- <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="请输入隶属库位ID" />
        </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.number="form.volumeRestriction" placeholder="请输入体积限制" />
        </el-form-item>
        <el-form-item label="重量限制" prop="weightLimit">
          <el-input v-model.number="form.weightLimit" placeholder="请输入重量限制" />
        </el-form-item>
        <el-form-item label="箱数限制" prop="containerNumberLimit">
          <el-input v-model.number="form.containerNumberLimit" placeholder="请输入箱数限制" />
        </el-form-item>
        <el-form-item label="数量限制" prop="quantitativeRestrictions">
          <el-input v-model.number="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.number="form.length" placeholder="请输入长度" />
        </el-form-item>
        <el-form-item label="宽" prop="width">
          <el-input v-model.number="form.width" placeholder="请输入宽" />
        </el-form-item>
        <el-form-item label="高" prop="height">
          <el-input v-model.number="form.height" placeholder="请输入高" />
        </el-form-item>
        <el-form-item label="坐标X" prop="coordinateX">
          <el-input v-model="form.coordinateX" placeholder="请输入坐标X" />
        </el-form-item>
        <el-form-item label="坐标Y" prop="coordinateY">
          <el-input v-model="form.coordinateY" placeholder="请输入坐标Y" />
        </el-form-item>
        <el-form-item label="坐标Z" prop="coordinateZ">
          <el-input v-model="form.coordinateZ" placeholder="请输入坐标Z" />
        </el-form-item>
        <el-form-item label="像素X" prop="pixelX">
          <el-input v-model="form.pixelX" placeholder="请输入像素X" />
        </el-form-item>
        <el-form-item label="像素Y" prop="pixelY">
          <el-input v-model="form.pixelY" placeholder="请输入像素Y" />
        </el-form-item>
        <el-form-item label="空间层数" prop="paceLayer">
          <el-input v-model="form.paceLayer" placeholder="请输入空间层数" />
        </el-form-item>
        <el-form-item label="是否允许" prop="allowMixedProduct">
          <el-input v-model="form.allowMixedProduct" placeholder="请输入1-允许" />
        </el-form-item>
        <el-form-item label="是否允许" 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="是否存在" 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: "创建人id不能为空", 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>
src/views/basicData/locationGroup/index.vue
@@ -77,9 +77,14 @@
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="locationGroupList" @selection-change="handleSelectionChange">
    <el-table v-loading="loading" border :data="locationGroupList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="库位组ID" align="center" prop="locationGroupId" v-if="true"/>
        <el-table-column
       label="序号"
      type="index"
      fixed
      width="50" />
      <!-- <el-table-column label="库位组ID" 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" />
@@ -131,7 +136,7 @@
    />
    <!-- æ·»åŠ æˆ–修改库位组对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="600px" 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="请输入库位组编号" />
@@ -151,7 +156,7 @@
        <el-form-item label="状态" prop="state">
          <el-input v-model="form.state" placeholder="请输入状态" />
        </el-form-item>
        <el-form-item label="最后更新人id" prop="lastUpdatedUserId">
        <!-- <el-form-item label="最后更新人id" prop="lastUpdatedUserId">
          <el-input v-model="form.lastUpdatedUserId" placeholder="请输入最后更新人id" />
        </el-form-item>
        <el-form-item label="最后更新人姓名" prop="lastUpdatedUserName">
@@ -164,7 +169,7 @@
            value-format="yyyy-MM-dd HH:mm:ss"
            placeholder="请选择最后更新时间">
          </el-date-picker>
        </el-form-item>
        </el-form-item> -->
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button :loading="buttonLoading" type="primary" @click="submitForm">ç¡® å®š</el-button>
src/views/basicData/warehouse/index.vue
@@ -1,25 +1,35 @@
<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"
          v-model.trim="queryParams.werks"
          placeholder="请输入工厂"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="名称" prop="warehouseName">
        <el-input
          v-model.trim="queryParams.warehouseName"
          placeholder="请输入名称"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="编号" prop="lgort">
        <el-input
          v-model.trim="queryParams.lgort"
          placeholder="请输入编号"
          clearable
          @keyup.enter.native="handleQuery"
        />
      </el-form-item>
      <el-form-item label="状态" prop="state">
        <el-input
          v-model="queryParams.state"
          v-model.trim="queryParams.state"
          placeholder="请输入状态"
          clearable
          @keyup.enter.native="handleQuery"
@@ -77,21 +87,30 @@
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
    <el-table v-loading="loading" :data="warehouseList" @selection-change="handleSelectionChange">
    <el-table v-loading="loading" border :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="序号"
      type="index"
      fixed
      width="50" />
      <!-- <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="管理员ID" align="center" prop="userId" />
      <el-table-column label="是否启用" align="center" prop="isUseLocation" >
        <template slot-scope="scope">
           <dict-tag :options="dict.type.isenable" :value="scope.row.isUseLocation"/>
        </template>
      </el-table-column>
      <!-- <el-table-column label="管理员ID" align="center" prop="userId" /> -->
        <el-table-column label="管理员名称" align="center" prop="userName" />
      <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="状态" 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">
@@ -128,45 +147,55 @@
    />
    <!-- æ·»åŠ æˆ–修改仓库对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="600px" 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-input v-model.trim="form.lgort" placeholder="请输入仓库编号" />
        </el-form-item>
        <el-form-item label="名称" prop="warehouseName">
          <el-input v-model="form.warehouseName" placeholder="请输入名称" />
          <el-input v-model.trim="form.warehouseName" placeholder="请输入名称" />
        </el-form-item>
        <el-form-item label="工厂" prop="werks">
          <el-input v-model="form.werks" placeholder="请输入工厂" />
          <el-input v-model.trim="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 label="类别" prop="type">
          <el-input v-model.trim="form.type" placeholder="请输入类别" />
        </el-form-item>
        <el-form-item label="管理员ID" prop="userId">
          <el-input v-model="form.userId" placeholder="请输入管理员ID" />
        <el-form-item label="是否启用" prop="isUseLocation">
          <!-- <el-input v-model.trim="form.isUseLocation" placeholder="请输入0,不启用
            1,启用" /> -->
                  <el-select v-model="form.isUseLocation" placeholder="是否启用" clearable>
            <el-option
              v-for="dict in dict.type.isenable"
              :key="dict.value"
              :label="dict.label"
              :value="dict.value"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="管理员名称" prop="userId">
          <el-input v-model.trim="form.userName" placeholder="请输入管理员名称" />
        </el-form-item>
        <el-form-item label="管理员电话" prop="userPhone">
          <el-input v-model="form.userPhone" placeholder="请输入管理员电话" />
          <el-input v-model.trim="form.userPhone" placeholder="请输入管理员电话" />
        </el-form-item>
        <el-form-item label="坐标X" prop="coordinateX">
          <el-input v-model="form.coordinateX" placeholder="请输入坐标X" />
          <el-input v-model.trim="form.coordinateX" placeholder="请输入坐标X" />
        </el-form-item>
        <el-form-item label="坐标Y" prop="coordinateY">
          <el-input v-model="form.coordinateY" placeholder="请输入坐标Y" />
          <el-input v-model.trim="form.coordinateY" placeholder="请输入坐标Y" />
        </el-form-item>
        <el-form-item label="描述" prop="description">
          <el-input v-model="form.description" placeholder="请输入描述" />
          <el-input v-model.trim="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 label="状态" prop="state">
          <el-input v-model.trim="form.state" placeholder="请输入状态" />
        </el-form-item> -->
        <!-- <el-form-item label="最后更新人id" prop="lastUpdatedUserId">
          <el-input v-model.trim="form.lastUpdatedUserId" placeholder="请输入最后更新人id" />
        </el-form-item>
        <el-form-item label="最后更新人姓名" prop="lastUpdatedUserName">
          <el-input v-model="form.lastUpdatedUserName" placeholder="请输入最后更新人姓名" />
          <el-input v-model.trim="form.lastUpdatedUserName" placeholder="请输入最后更新人姓名" />
        </el-form-item>
        <el-form-item label="最后更新时间" prop="lastUpdatedDateTime">
          <el-date-picker clearable
@@ -175,7 +204,7 @@
            value-format="yyyy-MM-dd HH:mm:ss"
            placeholder="请选择最后更新时间">
          </el-date-picker>
        </el-form-item>
        </el-form-item> -->
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button :loading="buttonLoading" type="primary" @click="submitForm">ç¡® å®š</el-button>
@@ -190,6 +219,7 @@
export default {
  name: "Warehouse",
    dicts: ['isenable'],
  data() {
    return {
      // æŒ‰é’®loading
@@ -262,30 +292,7 @@
        state: [
          { required: true, message: "状态不能为空", trigger: "blur" }
        ],
        displayOrder: [
          { required: true, message: "排序不能为空", trigger: "blur" }
        ],
        createdUserId: [
          { required: true, message: "创建人id不能为空", 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" }
        ]
      }
    };
  },
src/views/index.vue
@@ -1,191 +1,98 @@
<template>
  <div class="app-container home">
    <el-row :gutter="20">
      <el-col :sm="24" :lg="12" style="padding-left: 20px">
        <h2>RuoYi-Vue-Plus后台管理框架</h2>
        <p>
          RuoYi-Vue-Plus æ˜¯åŸºäºŽ RuoYi-Vue é’ˆå¯¹ åˆ†å¸ƒå¼é›†ç¾¤ åœºæ™¯å‡çº§(不兼容原框架)
          <br/>
          * å‰ç«¯å¼€å‘框架 Vue、Element UI<br/>
          * åŽç«¯å¼€å‘框架 Spring Boot<br/>
          * å®¹å™¨æ¡†æž¶ Undertow åŸºäºŽ XNIO çš„高性能容器<br/>
          * æƒé™è®¤è¯æ¡†æž¶ Sa-Token、Jwt æ”¯æŒå¤šç»ˆç«¯è®¤è¯ç³»ç»Ÿ<br/>
          * å…³ç³»æ•°æ®åº“ MySQL é€‚配 8.X æœ€ä½Ž 5.7<br/>
          * å…³ç³»æ•°æ®åº“ Oracle é€‚配 11g 12c<br/>
          * å…³ç³»æ•°æ®åº“ PostgreSQL é€‚配 13 14<br/>
          * å…³ç³»æ•°æ®åº“ SQLServer é€‚配 2017 2019<br/>
          * ç¼“存数据库 Redis é€‚配 6.X æœ€ä½Ž 4.X<br/>
          * æ•°æ®åº“框架 Mybatis-Plus å¿«é€Ÿ CRUD å¢žåŠ å¼€å‘效率<br/>
          * æ•°æ®åº“框架 p6spy æ›´å¼ºåŠ²çš„ SQL åˆ†æž<br/>
          * å¤šæ•°æ®æºæ¡†æž¶ dynamic-datasource æ”¯æŒä¸»ä»Žä¸Žå¤šç§ç±»æ•°æ®åº“异构<br/>
          * åºåˆ—化框架 Jackson ç»Ÿä¸€ä½¿ç”¨ jackson é«˜æ•ˆå¯é <br/>
          * Redis客户端 Redisson æ€§èƒ½å¼ºåŠ²ã€API丰富<br/>
          * åˆ†å¸ƒå¼é™æµ Redisson å…¨å±€ã€è¯·æ±‚IP、集群ID å¤šç§é™æµ<br/>
          * åˆ†å¸ƒå¼é” Lock4j æ³¨è§£é”ã€å·¥å…·é” å¤šç§å¤šæ ·<br/>
          * åˆ†å¸ƒå¼å¹‚ç­‰ Redisson æ‹¦æˆªé‡å¤æäº¤<br/>
          * åˆ†å¸ƒå¼é“¾è·¯è¿½è¸ª SkyWalking æ”¯æŒé“¾è·¯è¿½è¸ªã€ç½‘格分析、度量聚合、可视化<br/>
          * åˆ†å¸ƒå¼ä»»åŠ¡è°ƒåº¦ Xxl-Job é«˜æ€§èƒ½ é«˜å¯é  æ˜“扩展<br/>
          * åˆ†å¸ƒå¼æ–‡ä»¶å­˜å‚¨ Minio æœ¬åœ°å­˜å‚¨<br/>
          * åˆ†å¸ƒå¼äº‘存储 ä¸ƒç‰›ã€é˜¿é‡Œã€è…¾è®¯ äº‘存储<br/>
          * ç›‘控框架 SpringBoot-Admin å…¨æ–¹ä½æœåŠ¡ç›‘控<br/>
          * æ ¡éªŒæ¡†æž¶ Validation å¢žå¼ºæŽ¥å£å®‰å…¨æ€§ ä¸¥è°¨æ€§<br/>
          * Excel框架 Alibaba EasyExcel æ€§èƒ½ä¼˜å¼‚ æ‰©å±•æ€§å¼º<br/>
          * æ–‡æ¡£æ¡†æž¶ SpringDoc、javadoc æ— æ³¨è§£é›¶å…¥ä¾µåŸºäºŽjava注释<br/>
          * å·¥å…·ç±»æ¡†æž¶ Hutool、Lombok å‡å°‘代码冗余 å¢žåŠ å®‰å…¨æ€§<br/>
          * ä»£ç ç”Ÿæˆå™¨ é€‚配MP、SpringDoc规范化代码 ä¸€é”®ç”Ÿæˆå‰åŽç«¯ä»£ç <br/>
          * éƒ¨ç½²æ–¹å¼ Docker å®¹å™¨ç¼–排 ä¸€é”®éƒ¨ç½²ä¸šåŠ¡é›†ç¾¤<br/>
          * å›½é™…化 SpringMessage Spring标准国际化方案<br/>
        </p>
        <p>
          <b>当前版本:</b> <span>v{{ version }}</span>
        </p>
        <p>
          <el-tag type="danger">&yen;免费开源</el-tag>
        </p>
        <p>
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-cloudy"
            plain
            @click="goTarget('https://gitee.com/dromara/RuoYi-Vue-Plus')"
            >访问码云</el-button
          >
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-cloudy"
            plain
            @click="goTarget('https://github.com/dromara/RuoYi-Vue-Plus')"
          >访问GitHub</el-button
          >
          <el-button
            type="primary"
            size="mini"
            icon="el-icon-cloudy"
            plain
            @click="goTarget('https://gitee.com/dromara/RuoYi-Vue-Plus/wikis/pages?sort_id=4106467&doc_id=1469725')"
          >更新日志</el-button
          >
        </p>
      </el-col>
  <div class="dashboard-editor-container">
      <el-col :sm="24" :lg="12" style="padding-left: 50px">
        <el-row>
          <el-col :span="12">
            <h2>技术选型</h2>
    <panel-group @handleSetLineChartData="handleSetLineChartData" />
    <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;">
      <line-chart :chart-data="lineChartData" />
    </el-row>
    <el-row :gutter="32">
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <raddar-chart />
        </div>
      </el-col>
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <pie-chart />
        </div>
      </el-col>
      <el-col :xs="24" :sm="24" :lg="8">
        <div class="chart-wrapper">
          <bar-chart />
        </div>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <h4>后端技术</h4>
            <ul>
              <li>SpringBoot</li>
              <li>Sa-Token</li>
              <li>JWT</li>
              <li>MyBatis</li>
              <li>Druid</li>
              <li>Jackson</li>
              <li>...</li>
            </ul>
          </el-col>
          <el-col :span="6">
            <h4>前端技术</h4>
            <ul>
              <li>Vue</li>
              <li>Vuex</li>
              <li>Element-ui</li>
              <li>Axios</li>
              <li>Sass</li>
              <li>Quill</li>
              <li>...</li>
            </ul>
          </el-col>
        </el-row>
      </el-col>
    </el-row>
    <el-divider />
  </div>
</template>
<script>
import PanelGroup from './dashboard/PanelGroup'
import LineChart from './dashboard/LineChart'
import RaddarChart from './dashboard/RaddarChart'
import PieChart from './dashboard/PieChart'
import BarChart from './dashboard/BarChart'
const lineChartData = {
  newVisitis: {
    expectedData: [100, 120, 161, 134, 105, 160, 165],
    actualData: [120, 82, 91, 154, 162, 140, 145]
  },
  messages: {
    expectedData: [200, 192, 120, 144, 160, 130, 140],
    actualData: [180, 160, 151, 106, 145, 150, 130]
  },
  purchases: {
    expectedData: [80, 100, 121, 104, 105, 90, 100],
    actualData: [120, 90, 100, 138, 142, 130, 130]
  },
  shoppings: {
    expectedData: [130, 140, 141, 142, 145, 150, 160],
    actualData: [120, 82, 91, 154, 162, 140, 130]
  }
}
export default {
  name: "Index",
  name: 'Index',
  components: {
    PanelGroup,
    LineChart,
    RaddarChart,
    PieChart,
    BarChart
  },
  data() {
    return {
      // ç‰ˆæœ¬å·
      version: "0.8.3",
    };
      lineChartData: lineChartData.newVisitis
    }
  },
  methods: {
    goTarget(href) {
      window.open(href, "_blank");
    },
  },
};
    handleSetLineChartData(type) {
      this.lineChartData = lineChartData[type]
    }
  }
}
</script>
<style scoped lang="scss">
.home {
  blockquote {
    padding: 10px 20px;
    margin: 0 0 20px;
    font-size: 17.5px;
    border-left: 5px solid #eee;
  }
  hr {
    margin-top: 20px;
    margin-bottom: 20px;
    border: 0;
    border-top: 1px solid #eee;
  }
  .col-item {
    margin-bottom: 20px;
  }
<style lang="scss" scoped>
.dashboard-editor-container {
  padding: 32px;
  background-color: rgb(240, 242, 245);
  position: relative;
  ul {
    padding: 0;
    margin: 0;
  }
  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  color: #676a6c;
  overflow-x: hidden;
  ul {
    list-style-type: none;
  }
  h4 {
    margin-top: 0px;
  }
  h2 {
    margin-top: 10px;
    font-size: 26px;
    font-weight: 100;
  }
  p {
    margin-top: 10px;
    b {
      font-weight: 700;
  .chart-wrapper {
    background: #fff;
    padding: 16px 16px 0;
    margin-bottom: 32px;
    }
  }
  .update-log {
    ol {
      display: block;
      list-style-type: decimal;
      margin-block-start: 1em;
      margin-block-end: 1em;
      margin-inline-start: 0;
      margin-inline-end: 0;
      padding-inline-start: 40px;
    }
@media (max-width:1024px) {
  .chart-wrapper {
    padding: 8px;
  }
}
</style>
src/views/login.vue
@@ -1,7 +1,7 @@
<template>
  <div class="login">
    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
      <h3 class="title">RuoYi-Flowable-Plus后台管理系统</h3>
      <h3 class="title">钉乐后台管理系统</h3>
      <el-form-item prop="username">
        <el-input
          v-model="loginForm.username"
@@ -23,7 +23,7 @@
          <svg-icon slot="prefix" icon-class="password" class="el-input__icon input-icon" />
        </el-input>
      </el-form-item>
      <el-form-item prop="code" v-if="captchaEnabled">
      <!-- <el-form-item prop="code" v-if="captchaEnabled">
        <el-input
          v-model="loginForm.code"
          auto-complete="off"
@@ -36,7 +36,7 @@
        <div class="login-code">
          <img :src="codeUrl" @click="getCode" class="login-code-img"/>
        </div>
      </el-form-item>
      </el-form-item> -->
      <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox>
      <el-form-item style="width:100%;">
        <el-button
@@ -56,7 +56,7 @@
    </el-form>
    <!--  åº•éƒ¨  -->
    <div class="el-login-footer">
      <span>Copyright Â© 2021-2023 KonBAI All Rights Reserved.</span>
      <!-- <span>Copyright Â© 2021-2023 KonBAI All Rights Reserved.</span> -->
    </div>
  </div>
</template>
src/views/register.vue
@@ -1,7 +1,7 @@
<template>
  <div class="register">
    <el-form ref="registerForm" :model="registerForm" :rules="registerRules" class="register-form">
      <h3 class="title">RuoYi-Vue-Plus后台管理系统</h3>
      <h3 class="title">钉乐后台管理系统</h3>
      <el-form-item prop="username">
        <el-input v-model="registerForm.username" type="text" auto-complete="off" placeholder="账号">
          <svg-icon slot="prefix" icon-class="user" class="el-input__icon input-icon" />
src/views/system/dict/index.vue
@@ -110,7 +110,7 @@
    <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="字典编号" align="center" prop="dictId" />
      <!-- <el-table-column label="字典编号" align="center" prop="dictId" /> -->
      <el-table-column label="字典名称" align="center" prop="dictName" :show-overflow-tooltip="true" />
      <el-table-column label="字典类型" align="center" :show-overflow-tooltip="true">
        <template slot-scope="scope">
src/views/system/role/index.vue
@@ -100,7 +100,7 @@
    <el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">
      <el-table-column type="selection" width="55" align="center" />
      <el-table-column label="角色编号" prop="roleId" width="120" />
      <!-- <el-table-column label="角色编号" prop="roleId" width="120" /> -->
      <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" />
      <el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" />
      <el-table-column label="显示顺序" prop="roleSort" width="100" />
src/views/system/user/index.vue
@@ -139,7 +139,7 @@
        <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="50" align="center" />
          <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
          <!-- <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" /> -->
          <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
          <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
          <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
src/views/tool/gen/index.vue
@@ -278,7 +278,7 @@
          this.$modal.msgSuccess("成功生成到自定义路径:" + row.genPath);
        });
      } else {
        this.$download.zip("/tool/gen/batchGenCode?tables=" + tableNames, "dl.zip");
        this.$download.zip("/tool/gen/batchGenCode?tables=" + tableNames, `${row.tableName}.zip`);
      }
    },
    /** åŒæ­¥æ•°æ®åº“操作 */
vue.config.js
@@ -7,7 +7,7 @@
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || 'RuoYi-Flowable-Plus后台管理系统' // ç½‘页标题
const name = process.env.VUE_APP_TITLE || '钉乐后台管理系统' // ç½‘页标题
const port = process.env.port || process.env.npm_config_port || 80 // ç«¯å£
@@ -35,7 +35,7 @@
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
        target: `http://localhost:8080`,
        target: `http://192.168.0.106:8081`,
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''