소스 검색

新增版本号

zhangjintao 1 년 전
부모
커밋
603ceb2643

+ 8 - 0
src/api/index/index.js

@@ -133,3 +133,11 @@ export function getSetting(params) {
 //     method: 'delete',
 //   })
 // }
+//获取版本号列表
+export function getVersion(params) {
+  return request({
+    url: '/base/logs',
+    method: 'get',
+    params,
+  })
+}

+ 2 - 0
src/utils/request.js

@@ -57,6 +57,8 @@ const handleData = ({ config, data, status, statusText }) => {
       return data
     case 204:
       return data
+    case 201:
+      return data
     case 401:
       store
         .dispatch('user/resetAll')

+ 19 - 1
src/vab/components/VabFooter/index.vue

@@ -3,20 +3,38 @@
     Copyright
     <vab-icon icon="copyright-line" />
     {{ title }} {{ fullYear }}
+    <span style="margin-left: 6px">版本号</span>
+    {{ cot }}
   </footer>
 </template>
 
 <script>
   import { title } from '@/config'
-
+  import { getVersion } from '@/api/index/index'
   export default {
     name: 'VabFooter',
     data() {
       return {
         fullYear: new Date().getFullYear(),
         title,
+        cot: '',
       }
     },
+    created() {
+      this.getVersion()
+    },
+    methods: {
+      async getVersion() {
+        const { data } = await getVersion()
+        const { list } = data
+        this.list = list
+        if (list.length) {
+          this.cot = list[0].version_code
+        } else {
+          this.cot = '1.0.0'
+        }
+      },
+    },
   }
 </script>
 

+ 21 - 0
src/views/login/index.vue

@@ -84,6 +84,19 @@
               找回密码
             </div>
           </div>
+          <div class="chromeDiv">
+            <el-text class="mx-1">
+              推荐使用
+              <el-link
+                href="https://www.google.cn/chrome/"
+                style="margin-top: -4px; text-decoration: underline"
+                target="_blank"
+              >
+                Chrome
+              </el-link>
+              浏览器访问本系统
+            </el-text>
+          </div>
           <!-- <div class="tips">
             本系统为演示系统如有需要请联系我们:17638192817(李经理)
           </div> -->
@@ -299,6 +312,14 @@
       left: 10vw;
     }
   }
+  .chromeDiv {
+    margin-top: 2vh;
+    text-align: center;
+    color: #000;
+  }
+  .el-link.el-link--default {
+    color: #000;
+  }
   .bottom-text {
     margin-top: 30px;
     display: flex;

+ 41 - 0
src/views/versionManagement/api/index.js

@@ -0,0 +1,41 @@
+import request from '@/utils/request'
+//获取列表
+export function getList(params) {
+  return request({
+    url: '/base/logs',
+    method: 'get',
+    params,
+  })
+}
+//添加
+export function doAdd(data) {
+  return request({
+    url: '/base/log',
+    method: 'post',
+    data,
+  })
+}
+//编辑
+export function doEdit(data) {
+  return request({
+    url: '/base/log',
+    method: 'put',
+    data,
+  })
+}
+//获取详情
+export function particularsEdit(params) {
+  return request({
+    url: '/base/log',
+    method: 'get',
+    params,
+  })
+}
+//删除
+export function doDelete(data) {
+  return request({
+    url: '/base/log',
+    method: 'delete',
+    data,
+  })
+}

+ 97 - 0
src/views/versionManagement/components/handleDetails.vue

@@ -0,0 +1,97 @@
+<template>
+  <el-dialog
+    destroy-on-close
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="800px"
+  >
+    <div class="detail_wrap">
+      <div class="list">
+        <div>
+          <label>版本号:</label>
+          <span>{{ details.version_code }}</span>
+        </div>
+        <div>
+          <label>当前版本号:</label>
+          <span>{{ details.current_version_code }}</span>
+        </div>
+        <div>
+          <label>工时:</label>
+          {{ details.work_hour }}
+        </div>
+        <div>
+          <label>注意事项:</label>
+          {{ details.version_note }}
+        </div>
+        <div>
+          <label>更新人:</label>
+          {{ details.update_admin }}
+        </div>
+        <div>
+          <label>发布日期:</label>
+          {{ details.release_at }}
+        </div>
+        <div>
+          <label>版本内容:</label>
+          <div style="margin-top: -28px; margin-left: 134px">
+            <div
+              v-for="(item, index) in details.version_content"
+              :key="index"
+              style="margin-bottom: 5px"
+            >
+              {{ index + 1 }} {{ item }}
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+  import { particularsEdit } from '../api/index'
+
+  export default {
+    name: 'HandleDetails',
+    data() {
+      return {
+        details: [],
+        title: '',
+        dialogFormVisible: false,
+      }
+    },
+    methods: {
+      showEdit(row) {
+        if (row) {
+          this.title = '详情'
+          // this.details = Object.assign({}, row)
+          this.particulars(row.id)
+        }
+        this.dialogFormVisible = true
+      },
+      //详情
+      async particulars(e) {
+        const { data } = await particularsEdit({
+          id: e,
+        })
+        this.details = data[0]
+      },
+    },
+  }
+</script>
+<style lang="scss" scoped>
+  .detail_wrap {
+    .list {
+      div {
+        label {
+          width: 120px;
+          text-align: right;
+          margin-right: 12px;
+          display: inline-block;
+        }
+        font-size: 16px;
+        margin-top: 12px;
+      }
+    }
+  }
+</style>

+ 205 - 0
src/views/versionManagement/components/versionEdit.vue

@@ -0,0 +1,205 @@
+<template>
+  <el-dialog
+    :close-on-click-modal="false"
+    destroy-on-close
+    :title="title"
+    :visible.sync="dialogFormVisible"
+    width="800px"
+    @close="close('form')"
+  >
+    <el-form ref="form" label-width="120px" :model="form" :rules="rules">
+      <el-form-item label="发布日期" prop="release_at">
+        <el-date-picker
+          v-model="form.release_at"
+          format="yyyy-MM-dd"
+          placeholder="请选择发布日期"
+          style="width: 100%"
+          type="date"
+          value-format="yyyy-MM-dd"
+        />
+      </el-form-item>
+      <el-form-item label="版本号" prop="version_code">
+        <el-input v-model="form.version_code" placeholder="请输入版本号" />
+      </el-form-item>
+      <!-- <el-form-item label="当前版本号" prop="current_version_code">
+        <el-input v-model="form.current_version_code" />
+      </el-form-item> -->
+      <el-form-item label="版本内容" prop="version_content">
+        <el-input
+          v-model="form.version_content"
+          placeholder="请输入版本更新内容并用;隔开"
+          rows="5"
+          type="textarea"
+        />
+      </el-form-item>
+      <el-form-item label="所用工时">
+        <el-input
+          v-model="form.work_hour"
+          placeholder="请输入所用工时"
+          type="number"
+        />
+      </el-form-item>
+      <el-form-item label="注意事项" prop="version_note">
+        <el-input
+          v-model="form.version_note"
+          placeholder="请输入注意事项"
+          rows="5"
+          type="textarea"
+        />
+      </el-form-item>
+      <el-form-item label="更新人员" prop="update_admin">
+        <el-input v-model="form.update_admin" placeholder="请输入更新人员" />
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close('form')">取 消</el-button>
+      <el-button v-if="title == '编辑'" type="primary" @click="save">
+        确 定
+      </el-button>
+      <el-button v-if="title == '添加'" type="primary" @click="add">
+        添 加
+      </el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import { doAdd, particularsEdit, doEdit, getList } from '../api/index'
+
+  export default {
+    name: 'VersionEdit',
+    data() {
+      return {
+        form: {
+          version_code: '',
+          // current_version_code: '',
+          version_content: '',
+          work_hour: '',
+          version_note: '',
+          update_admin: '',
+          release_at: '',
+        },
+        rules: {
+          version_code: [
+            { required: true, trigger: 'blur', message: '请输入版本号' },
+          ],
+          // current_version_code: [
+          //   { required: true, trigger: 'blur', message: '请输入当前版本号' },
+          // ],
+          version_content: [
+            { required: true, trigger: 'blur', message: '请输入版本内容' },
+          ],
+          // work_hour: [
+          //   { required: true, trigger: 'blur', message: '请输入所用工时' },
+          // ],
+          release_at: [
+            { required: true, trigger: 'change', message: '请选择发布日期' },
+          ],
+          update_admin: [
+            { required: true, trigger: 'blur', message: '请输入更新人员' },
+          ],
+        },
+        title: '',
+        dialogFormVisible: false,
+      }
+    },
+    methods: {
+      // translateTitle,
+      showEdit(row) {
+        if (!row) {
+          this.title = '添加'
+          this.getList()
+        } else {
+          this.title = '编辑'
+          this.particulars(row.id)
+          // this.form = Object.assign({}, row)
+        }
+        this.dialogFormVisible = true
+      },
+      incrementVersion(version) {
+        const parts = version.split('.')
+        const lastPart = parseInt(parts[parts.length - 1], 10)
+        parts[parts.length - 1] = lastPart + 1
+        this.form.version_code = parts.join('.')
+      },
+      async getList() {
+        const { data } = await getList()
+        const { list } = data
+        this.list = list
+        if (list.length) {
+          this.form.version_code = list[0].version_code
+          this.incrementVersion(this.form.version_code)
+        } else {
+          this.form.version_code = '1.0.0'
+        }
+      },
+      close(e) {
+        //移除校验结果并重置字段值
+        this.$nextTick(() => {
+          if (this.$refs[e] !== undefined) {
+            this.$refs[e].resetFields()
+          }
+        })
+        this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      //详情
+      async particulars(e) {
+        const { data } = await particularsEdit({
+          id: e,
+        })
+        this.form = data[0]
+      },
+
+      //编辑保存
+      save() {
+        console.log(this.form, 'this.form')
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            const { message } = await doEdit(this.form)
+            this.$baseMessage(
+              message,
+              'success',
+              false,
+              'vab-hey-message-success'
+            )
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+      //添加
+      add() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            this.form.version_content = this.form.version_content.replace(
+              /;/g,
+              ';'
+            )
+            this.form.update_admin = this.form.update_admin.replace(/;/g, ';')
+            const { message } = await doAdd(this.form)
+            this.$baseMessage(
+              message,
+              'success',
+              false,
+              'vab-hey-message-success'
+            )
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>
+<style scoped>
+  .no-autofill-pwd {
+    text-security: disc !important;
+    -webkit-text-security: disc !important;
+  }
+  .yulan {
+    width: 100px;
+    display: block;
+    margin-bottom: 10px;
+  }
+</style>

+ 276 - 0
src/views/versionManagement/version.vue

@@ -0,0 +1,276 @@
+<template>
+  <div class="department-management-container">
+    <vab-query-form>
+      <vab-query-form-left-panel :span="12">
+        <el-button icon="el-icon-plus" type="primary" @click="handleEdit">
+          添加
+        </el-button>
+      </vab-query-form-left-panel>
+      <!-- <vab-query-form-right-panel :span="12">
+        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+          <el-form-item>
+            <el-input
+              v-model.trim="queryForm.name"
+              clearable
+              placeholder="请输入名称"
+              @keyup.enter.native="queryData"
+            />
+          </el-form-item>
+          <el-form-item>
+            <el-button icon="el-icon-search" type="primary" @click="queryData">
+              查询
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </vab-query-form-right-panel> -->
+    </vab-query-form>
+
+    <el-table
+      v-loading="listLoading"
+      border
+      :data="list"
+      default-expand-all
+      row-key="id"
+    >
+      <el-table-column
+        align="center"
+        label="发布日期"
+        prop="release_at"
+        show-overflow-tooltip
+        width="120"
+      />
+      <el-table-column
+        align="center"
+        label="版本号"
+        prop="version_code"
+        show-overflow-tooltip
+        width="120"
+      >
+        <template #default="{ $index, row }">
+          <div v-if="$index == 0">
+            <div>{{ row.version_code }}</div>
+            <div style="font-size: 12px; color: red">(当前版本)</div>
+          </div>
+          <div v-else>{{ row.version_code }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column
+        align="left"
+        label="版本内容"
+        prop="version_content"
+        show-overflow-tooltip
+      >
+        <template #default="{ row }">
+          <div @click="orderTimeList(row.version_content)">
+            <div
+              v-for="(item, index) in row.version_content"
+              :key="index"
+              style="margin-bottom: 5px"
+            >
+              <div>
+                {{ item }}
+              </div>
+            </div>
+            <!-- <div v-if="row.version_content.length > 3" class="click-more">
+              点击查看更多
+              <i class="el-icon-d-arrow-right"></i>
+            </div> -->
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column
+        align="left"
+        label="注意事项"
+        prop="version_note"
+        show-overflow-tooltip
+        width="400"
+      >
+        <template #default="{ row }">
+          <!-- <el-tag v-if="row.version_note" type="danger">
+            {{ row.version_note }}
+          </el-tag>
+          <div v-else>--</div> -->
+          <div>{{ row.version_note }}</div>
+        </template>
+      </el-table-column>
+      <el-table-column
+        align="center"
+        label="更新人员"
+        show-overflow-tooltip
+        width="180"
+      >
+        <template #default="{ row }">
+          <div
+            v-for="(item, index) in row.update_admin"
+            :key="index"
+            style="margin-bottom: 5px"
+          >
+            <el-tag>
+              {{ item }}
+            </el-tag>
+          </div>
+        </template>
+      </el-table-column>
+      <!-- <el-table-column align="center" label="操作" width="200">
+        <template #default="{ row }">
+          <el-button type="text" @click="handleEdit(row)">编辑</el-button>
+          <el-button type="text" @click="handleDelete(row)">删除</el-button>
+          <el-button type="text" @click="handleDetail(row)">详情</el-button>
+        </template>
+      </el-table-column> -->
+      <template #empty>
+        <el-image
+          class="vab-data-empty"
+          :src="require('@/assets/empty_images/data_empty.png')"
+        />
+      </template>
+    </el-table>
+    <el-pagination
+      background
+      :current-page="queryForm.page"
+      :layout="layout"
+      :page-size="queryForm.per_page"
+      :page-sizes="[15, 20, 30, 40, 50, 100]"
+      :total="total"
+      @current-change="handleCurrentChange"
+      @size-change="handleSizeChange"
+    />
+    <VersionEdit ref="edit" @fetch-data="getList" />
+    <HandleDetail ref="handle" />
+    <el-dialog
+      destroy-on-close
+      title="版本内容"
+      :visible.sync="dialogFormVisible"
+      width="500px"
+    >
+      <div
+        v-for="(item, index) in dialogFormVisibleContent"
+        :key="index"
+        style="margin-bottom: 6px"
+      >
+        {{ item }}
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import { getList, doDelete } from './api/index'
+  import HandleDetail from './components/handleDetails.vue'
+  import VersionEdit from './components/versionEdit.vue'
+  export default {
+    name: 'VersionManagement',
+    components: { VersionEdit, HandleDetail },
+    data() {
+      return {
+        list: [],
+        dialogFormVisible: false,
+        listLoading: true,
+        layout: 'total, sizes, prev, pager, next, jumper',
+        total: 0,
+        selectRows: '',
+        queryForm: {
+          page: 1,
+          per_page: 15,
+        },
+        //修改排序
+        editForm: {},
+        oldSort: 0,
+        editStatus: 0, //排序编辑状态 0为正常 1显示输入框
+        flag: false, //是否自动聚焦
+        dialogFormVisibleContent: [],
+      }
+    },
+    created() {
+      this.getList()
+    },
+    methods: {
+      //pageSize 改变时会触发
+      handleSizeChange(val) {
+        console.log(val, 'handleSizeChange')
+        this.queryForm.per_page = val
+        this.getList()
+      },
+      //	currentPage 改变时会触发
+      handleCurrentChange(val) {
+        console.log(val, 'handleCurrentChange')
+        this.queryForm.page = val
+        this.getList()
+      },
+      handleEdit(row) {
+        if (row.id) {
+          this.$refs['edit'].showEdit(row)
+        } else {
+          this.$refs['edit'].showEdit()
+        }
+      },
+      handleDetail(row) {
+        this.$refs['handle'].showEdit(row)
+      },
+      handleDelete(row) {
+        console.log(row)
+        if (row.id) {
+          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
+            const { message } = await doDelete({ id: row.id })
+            this.$baseMessage(
+              message,
+              'success',
+              false,
+              'vab-hey-message-success'
+            )
+            await this.getList()
+          })
+        }
+      },
+      orderTimeList(details) {
+        console.log(details)
+        this.dialogFormVisibleContent = details
+        this.dialogFormVisible = true
+      },
+      // queryData() {
+      //   this.queryForm.page = 1
+      //   this.getList()
+      // },
+      async getList() {
+        this.listLoading = true
+        const { data } = await getList(this.queryForm)
+        console.log(data.length, '列表')
+        const { list, meta } = data
+        this.list = list
+        this.total = meta.pagination.total
+        this.listLoading = false
+      },
+    },
+  }
+</script>
+<style scoped lang="scss">
+  .click-more {
+    color: #ff8d1a;
+    font-size: 12px;
+  }
+  .department-management-container {
+    background: $base-color-white;
+  }
+  /* 修改排序样式 */
+  .edit {
+    display: inline-block;
+    width: 110px;
+  }
+  .input-sort {
+    display: inline-block;
+    width: 80px;
+    margin-right: 10px;
+    margin-left: 10px;
+    border: none;
+  }
+  .sort-num {
+    display: inline-block;
+    margin-right: 10px;
+  }
+  .el-icon-edit,
+  .el-icon-circle-check,
+  .el-icon-circle-close {
+    color: #1890ff;
+    cursor: pointer;
+  }
+</style>

+ 1 - 0
vue.config.js

@@ -63,6 +63,7 @@ module.exports = {
     proxy: {
       [baseURL]: {
         target: `http://api.lab.site.xmnk.cn/admin`,
+        // target: `http://192.168.12.123:96/admin`,
         ws: true,
         changeOrigin: true,
         pathRewrite: {