Просмотр исходного кода

feat: 新增APP版本管理功能

yusheng 9 месяцев назад
Родитель
Сommit
30b7c410f8

+ 23 - 0
src/api/appUpdate/index.js

@@ -0,0 +1,23 @@
+import request from '@/utils/request';
+import { download } from '@/utils/file';
+/**
+ * 获取信息列表
+ */
+export async function getTableList(params) {
+  const res = await request.get(`/sys/appupdates/page`, { params });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+/**
+ * 新增信息
+ */
+export async function addInformation(data) {
+  const res = await request.post(`/sys/appupdates/save`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 21 - 18
src/components/upload/fileUpload.vue

@@ -11,9 +11,13 @@
       :before-upload="beforeUpload"
       :before-upload="beforeUpload"
       :file-list="fileList"
       :file-list="fileList"
       :show-file-list="!showLib"
       :show-file-list="!showLib"
+      :limit="limit"
+      v-bind="$attrs"
     >
     >
       <slot>
       <slot>
-        <el-button type="primary" icon="el-icon-plus" size="mini">点击上传</el-button>
+        <el-button type="primary" icon="el-icon-plus" size="mini"
+          >点击上传</el-button
+        >
       </slot>
       </slot>
     </el-upload>
     </el-upload>
     <el-button type="primary" class="lib" @click="handleOpenLib" v-if="showLib"
     <el-button type="primary" class="lib" @click="handleOpenLib" v-if="showLib"
@@ -79,7 +83,7 @@
   export default {
   export default {
     props: {
     props: {
       value: {
       value: {
-        type: [Array,String],
+        type: [Array, String],
         default: () => []
         default: () => []
       },
       },
       // 所属模块
       // 所属模块
@@ -103,7 +107,7 @@
         default: 10
         default: 10
       }
       }
     },
     },
-    data () {
+    data() {
       return {
       return {
         documentVisible: false,
         documentVisible: false,
         selectItem: null,
         selectItem: null,
@@ -149,7 +153,7 @@
     },
     },
     computed: {
     computed: {
       fileList: {
       fileList: {
-        set (val) {
+        set(val) {
           // console.log(val);
           // console.log(val);
           this.$emit(
           this.$emit(
             'input',
             'input',
@@ -159,9 +163,9 @@
             }))
             }))
           );
           );
         },
         },
-        get () {
+        get() {
           // console.log(this.value, 2);
           // console.log(this.value, 2);
-          if(!Array.isArray(this.value)) return []
+          if (!Array.isArray(this.value)) return [];
           const arr =
           const arr =
             (this.value &&
             (this.value &&
               this.value.map((item) => ({
               this.value.map((item) => ({
@@ -176,37 +180,36 @@
 
 
     methods: {
     methods: {
       //点击查看图片
       //点击查看图片
-      handleItem(file){
-
-       getFile({ objectName: file.storePath }, file.name);
+      handleItem(file) {
+        getFile({ objectName: file.storePath }, file.name);
       },
       },
-      delFileList () {
+      delFileList() {
         this.$emit('input', []);
         this.$emit('input', []);
       },
       },
-      handleOpenLib () {
+      handleOpenLib() {
         this.documentVisible = true;
         this.documentVisible = true;
         this.$nextTick(() => {
         this.$nextTick(() => {
           this.reload();
           this.reload();
         });
         });
       },
       },
       //图文档勾选
       //图文档勾选
-      submitDocument () {
+      submitDocument() {
         this.$emit('input', [
         this.$emit('input', [
           { url: this.selectItem.storePath, ...this.selectItem }
           { url: this.selectItem.storePath, ...this.selectItem }
         ]);
         ]);
         this.documentVisible = false;
         this.documentVisible = false;
       },
       },
-      datasource ({ page, limit }) {
+      datasource({ page, limit }) {
         return getFileList({
         return getFileList({
           ...this.documentForm,
           ...this.documentForm,
           pageNum: page,
           pageNum: page,
           size: limit
           size: limit
         });
         });
       },
       },
-      reload () {
+      reload() {
         this.$refs.table.reload();
         this.$refs.table.reload();
       },
       },
-      beforeRemove (file) {
+      beforeRemove(file) {
         if (file.id) {
         if (file.id) {
           return removeFile({
           return removeFile({
             fileId: file.id
             fileId: file.id
@@ -217,10 +220,10 @@
           return true;
           return true;
         }
         }
       },
       },
-      handleRemove (file, fileList) {
+      handleRemove(file, fileList) {
         this.fileList = fileList;
         this.fileList = fileList;
       },
       },
-      beforeUpload (file) {
+      beforeUpload(file) {
         if (file.size / 1024 / 1024 > this.size) {
         if (file.size / 1024 / 1024 > this.size) {
           this.$message.error(`大小不能超过 ${this.size}MB`);
           this.$message.error(`大小不能超过 ${this.size}MB`);
           return false;
           return false;
@@ -244,7 +247,7 @@
           return res.data;
           return res.data;
         });
         });
       },
       },
-      handlRequest () {
+      handlRequest() {
         return Promise.resolve();
         return Promise.resolve();
       }
       }
     }
     }

+ 85 - 208
src/views/appUpdate/components/addOrEditDialog.vue

@@ -1,242 +1,119 @@
 <template>
 <template>
-  <ele-modal custom-class="ele-dialog-form long-dialog-form"
-             :centered="true" :visible.sync="addOrEditDialogFlag" :title="title"
-             append-to-body
-             :close-on-click-modal="false" width="28%" :before-close="cancel" :maxable="true">
-    <el-form ref="form" :model="form" :rules="rules" class="el-form-box" label-width="110px">
-      <headerTitle title="基本信息"/>
-      <el-row :gutter="12">
-        <el-col :span="12">
-          <div style="margin:0 0 10px 70px">
-            <span>示例</span>
-            <span style="color: red;margin-left: 10px">
-               {{ getExample }}
-             </span>
-          </div>
-        </el-col>
-      </el-row>
+  <ele-modal
+    custom-class="ele-dialog-form long-dialog-form"
+    :centered="true"
+    :visible.sync="addOrEditDialogFlag"
+    title="新增"
+    append-to-body
+    :close-on-click-modal="false"
+    width="40%"
+    :before-close="cancel"
+    :maxable="true"
+  >
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      class="el-form-box"
+      label-width="110px"
+    >
       <el-row :gutter="12">
       <el-row :gutter="12">
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="分类" prop="type">
-<!--            <ele-tree-select-->
-<!--              clearable-->
-<!--              :data="typeList"-->
-<!--              v-model="form.type"-->
-<!--              placeholder="请选择"-->
-<!--              valueKey="id"-->
-<!--              labelKey="name"-->
-<!--              childrenKey="subList"-->
-<!--            />-->
-            <DictSelection dictName="版本规则分类" clearable filterable v-model="form.type" :isProhibit="type=='view'">
-            </DictSelection>
-<!--            <el-select v-model="form.type" filterable style="width: 100%;" :disabled="type=='view'">-->
-<!--              <el-option v-for="item in typeList" :key="item.id" :value="item.id" :label="item.name"></el-option>-->
-<!--            </el-select>-->
+          <el-form-item label="版本号" prop="versionCode">
+            <el-input v-model="form.versionCode"></el-input>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
       </el-row>
       </el-row>
       <el-row :gutter="12">
       <el-row :gutter="12">
         <el-col :span="24">
         <el-col :span="24">
-          <el-form-item label="名称" prop="name">
-            <el-input v-model="form.name" :disabled="type=='view'"></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="12">
-        <el-col :span="16">
-          <el-form-item label="大版本采用" prop="noteType">
-            <el-select v-model="form.noteType" @change="handleNoteType" :disabled="type=='view'" style="width: 100%;">
-              <el-option :value="1" label="字母"></el-option>
-              <el-option :value="2" label="数字"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="位数" prop="noteNum" label-width="50px">
-            <el-select v-model="form.noteNum" style="width: 100%;" :disabled="type=='view'">
-              <el-option :value="1" label="1"></el-option>
-              <el-option :value="2" label="2"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="12">
-        <el-col :span="16">
-          <el-form-item label="大版本初始值" prop="note">
-            <el-input v-model="form.note" :disabled="type=='view'"></el-input>
+          <el-form-item label="上传安装包" prop="name">
+            <fileUpload
+              v-model="form.fileAttach"
+              module="main"
+              :showLib="false"
+              :limit="1"
+              :size="100"
+              :accept="'.apk'"
+            />
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
-        <el-col :span="8">
-          <span style="margin-left: 10px;line-height: 38px;color: red">默认字母A,数字1</span>
-        </el-col>
       </el-row>
       </el-row>
       <el-row :gutter="12">
       <el-row :gutter="12">
         <el-col :span="16">
         <el-col :span="16">
-          <el-form-item label="连接符" prop="mark">
-            <el-input v-model="form.mark" :disabled="type=='view'"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-        </el-col>
-      </el-row>
-      <el-row :gutter="12">
-        <el-col :span="16">
-          <el-form-item label="小版本初始值" prop="versionNumber">
-            <el-input type="number" v-model="form.versionNumber" :disabled="type=='view'"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="位数" prop="versionNum" label-width="50px">
-            <el-select v-model="form.versionNum" style="width: 100%;" :disabled="type=='view'">
-              <el-option :value="1" label="1"></el-option>
-              <el-option :value="2" label="2"></el-option>
-              <el-option :value="3" label="3"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="12">
-        <el-col :span="16">
-          <el-form-item label="变更后版本">
-            <el-select v-model="form.changeType" style="width: 100%;" :disabled="type=='view'">
-              <el-option :value="1" label="提升大版本"></el-option>
-              <el-option :value="2" label="提升小版本"></el-option>
-            </el-select>
+          <el-form-item label="发布说明" prop="releaseNotes">
+            <el-input v-model="form.releaseNotes" type="textarea"> </el-input>
           </el-form-item>
           </el-form-item>
         </el-col>
         </el-col>
       </el-row>
       </el-row>
     </el-form>
     </el-form>
     <div slot="footer">
     <div slot="footer">
-      <el-button v-if="type!=='view'" type="primary" @click="handleSave">保存</el-button>
+      <el-button type="primary" @click="handleSave">保存</el-button>
       <el-button @click="cancel">返回</el-button>
       <el-button @click="cancel">返回</el-button>
     </div>
     </div>
   </ele-modal>
   </ele-modal>
 </template>
 </template>
 
 
 <script>
 <script>
-import {getDetailsByIdAPI, versionManageSaveAPI, versionManageUpdateAPI} from "@/api/versionManage";
-import {getInfoById} from "@/api/classifyManage";
+  import { addInformation } from '@/api/appUpdate';
+  import FileUpload from '@/components/upload/fileUpload.vue';
 
 
-export default {
-  name: "addOrEditDIalog",
-  props: {
-    addOrEditDialogFlag: Boolean,
-    typeList: {
-      type: Array,
-      default: () => {
-        return []
-      }
+  export default {
+    name: 'addOrEditDIalog',
+    props: {
+      addOrEditDialogFlag: Boolean
     },
     },
-  },
-  data() {
-    return {
-      title: '',
-      type: '',
-      form: {
-        id: '',
-        type: '',
-        name: '',
-        noteType: 1,
-        noteNum: 1,
-        note: 'A',
-        mark: '.',
-        versionNumber: '1',
-        versionNum: 1,
-        changeType: 1,
-      },
-
-    }
-  },
-  computed: {
-    getExample() {
-      let value = this.form.note || (this.form.noteType == 1 ? 'A' : '1')
-      return value + this.form.mark + this.form.versionNumber
+    components: {
+      FileUpload
     },
     },
-    rules() {
+    data() {
       return {
       return {
-        type: [{required: true, message: '请选择', trigger: 'change'}],
-        name: [{required: true, message: '请输入', trigger: 'blur'}],
-        noteType: [{required: true, message: '请选择', trigger: 'change'}],
-        noteNum: [{required: true, message: '请选择', trigger: 'change'}],
-        mark: [
-          {required: true, message: '请输入', trigger: 'blur'},
-          {validator: this.markValidate, trigger: ['blur']},
-        ],
-        note: [{required: false, validator: this.noteValidate, trigger: 'blur'}],
-        versionNum: [
-          {required: true, message: '请输入', trigger: ['blur', 'change']},
-
-        ],
-        versionNumber: [
-          {required: true, message: '请输入', trigger: 'blur'},
-          {validator: this.versionNumValidate, trigger: ['blur', 'change']},
-        ],
-      }
-    }
-  },
-  methods: {
-    handleNoteType(val) {
-      this.form.note = val == 1 ? 'A' : '1'
+        form: {
+          versionCode: '',
+          releaseNotes: '',
+          fileAttach: []
+        }
+      };
     },
     },
-    noteValidate(rule, value, callback) {
-      if (!value) callback()
-      let regex = this.form.noteType == 1 ? `[A-Z]` : `[0-9]`
-      let regexA = new RegExp(`^${regex}{${this.form.noteNum}}$`)
-      if (!regexA.test(value)) {
-        callback(new Error('输入格式错误'))
+    computed: {
+      rules() {
+        return {
+          versionCode: [{ required: true, message: '请输入', trigger: 'change' }],
+          releaseNotes: [
+            { required: true, message: '请输入', trigger: 'blur' }
+          ],
+          fileAttach: [{ required: true, message: '请选择', trigger: 'change' }]
+        };
       }
       }
-      callback()
     },
     },
-    versionNumValidate(rule, value, callback) {
-      if (!value) callback('请输入')
-      let regex = `[0-9]`
-      let regexA = new RegExp(`^${regex}{${this.form.versionNum}}$`)
-      if (!regexA.test(value)) {
-        callback(new Error('输入格式错误'))
-      }
-      callback()
-    },
-    markValidate(rule, value, callback) {
-      if (!value) callback('请输入')
-      const regex = /^[~*_\-:;,./]+$/;
-      if (!regex.test(value)) {
-        callback(new Error('输入格式错误,可选连接符(~ * _ \ - : ; , . /)'))
-      }
-      callback()
-    },
-    //页面初始化
-    init(type, row = {}) {
-      this.title = type == 'add' ? '新增' : type == 'edit' ? '修改' : '详情'
-      this.type = type
-      if (type !== 'add') {
-        this.getDetail(row.id)
-      }
-    },
-    async getDetail(id) {
-      this.loading = true;
-      this.form = await getDetailsByIdAPI(id);
-      this.loading = false;
-    },
-    handleSave() {
-      this.$refs.form.validate(async valid => {
-        if (!valid) return
-        const API = this.type == 'add' ? versionManageSaveAPI : versionManageUpdateAPI
-        await API(this.form)
-        this.$message.success('操作成功')
-        this.cancel()
-        this.$emit('reload')
-      })
+    methods: {
+      async init() {
+        // this.form.versionCode = await getCode('app_update_version_code');
+      },
+      handleSave() {
+        console.log(this.form);
 
 
-    },
-    //关闭弹窗
-    cancel() {
-      this.$emit('update:addOrEditDialogFlag', false)
-    },
-  }
-}
+        this.$refs.form.validate(async (valid) => {
+          if (!valid) return;
+          try {
+            this.form.fileName = this.form.fileAttach[0].name;
+            this.form.fileStorePath = this.form.fileAttach[0].storePath;
+            this.form.fileUrl = this.form.fileAttach[0].url;
+            this.form.fileSize = this.form.fileAttach[0].size;
+            await addInformation(this.form);
+            this.$message.success('操作成功');
+            this.cancel();
+            this.$emit('reload');
+          } catch (error) {
+            console.log(error);
+          }
+        });
+      },
+      //关闭弹窗
+      cancel() {
+        this.$emit('update:addOrEditDialogFlag', false);
+      }
+    }
+  };
 </script>
 </script>
 
 
-
-<style scoped lang="scss">
-
-</style>
+<style scoped lang="scss"></style>

+ 80 - 289
src/views/appUpdate/index.vue

@@ -2,7 +2,7 @@
   <div class="ele-body">
   <div class="ele-body">
     <el-card shadow="never">
     <el-card shadow="never">
       <!-- 搜索表单 -->
       <!-- 搜索表单 -->
-      <index-search :typeList="typeList" @search="reload"/>
+      <!-- <index-search :typeList="typeList" @search="reload" /> -->
       <!-- 数据表格 -->
       <!-- 数据表格 -->
       <ele-pro-table
       <ele-pro-table
         ref="table"
         ref="table"
@@ -20,83 +20,21 @@
             type="primary"
             type="primary"
             icon="el-icon-plus"
             icon="el-icon-plus"
             class="ele-btn-icon"
             class="ele-btn-icon"
-            @click="openEdit('','add')"
+            @click="openEdit('', 'add')"
             v-if="$hasPermission('main:version:save')"
             v-if="$hasPermission('main:version:save')"
           >
           >
             新建
             新建
           </el-button>
           </el-button>
-          <el-button
-            size="small"
-            type="danger"
-            icon="el-icon-delete"
-            class="ele-btn-icon"
-            v-if="$hasPermission('main:version:delete')"
-            @click="removeBatch"
-            plain
-          >
-            删除
-          </el-button>
-          <!--          <el-button-->
-          <!--            size="small"-->
-          <!--            type="primary"-->
-          <!--            icon="el-icon-upload2"-->
-          <!--            class="ele-btn-icon"-->
-          <!--            plain-->
-          <!--          >-->
-          <!--            导出-->
-          <!--          </el-button>-->
-          <!--          <el-button-->
-          <!--            size="small"-->
-          <!--            type="primary"-->
-          <!--            icon="el-icon-download"-->
-          <!--            class="ele-btn-icon"-->
-          <!--            plain-->
-          <!--          >-->
-          <!--            导入-->
-          <!--          </el-button>-->
         </template>
         </template>
-
-        <!-- 操作列 -->
-        <template v-slot:action="{ row }">
+        <template v-slot:fileUrl="{ row }">
           <el-link
           <el-link
-            v-if="row.status!=1&&$hasPermission('main:version:update')"
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="openEdit(row,'edit')"
+            size="mini"
+            type="text"
+            @click="downloadFile(row)"
+            v-if="row.fileUrl"
           >
           >
-            修改
+            下载
           </el-link>
           </el-link>
-          <el-link
-            type="primary"
-            :underline="false"
-            icon="el-icon-setting"
-            @click="openEdit(row, 'view')"
-          >
-            详情
-          </el-link>
-          <el-popconfirm
-            v-if="row.status!=1&&$hasPermission('main:version:delete')"
-            class="ele-action"
-            title="确定要删除当前版本规则吗?"
-            @confirm="remove(row)"
-          >
-            <template v-slot:reference>
-              <el-link type="danger" :underline="false" icon="el-icon-delete">
-                删除
-              </el-link>
-            </template>
-          </el-popconfirm>
-        </template>
-        <template v-slot:status="scope">
-          <el-switch
-            @change="(val)=>handleStatus(scope,val)"
-            :active-value="1"
-            :inactive-value="0"
-            v-model="scope.row.status"
-            active-color="#13ce66"
-            inactive-color="#ff4949">
-          </el-switch>
         </template>
         </template>
       </ele-pro-table>
       </ele-pro-table>
     </el-card>
     </el-card>
@@ -105,240 +43,93 @@
       :addOrEditDialogFlag.sync="addOrEditDialogFlag"
       :addOrEditDialogFlag.sync="addOrEditDialogFlag"
       v-if="addOrEditDialogFlag"
       v-if="addOrEditDialogFlag"
       ref="addOrEditDialogRef"
       ref="addOrEditDialogRef"
-      :data="current"
-      :typeList="typeList"
       @reload="reload"
       @reload="reload"
     />
     />
   </div>
   </div>
 </template>
 </template>
 
 
 <script>
 <script>
-import addOrEditDialog from './components/addOrEditDialog.vue';
-import dictMixins from '@/mixins/dictMixins';
-import FileUpload from "@/components/upload/fileUpload.vue";
-import {getFile} from "@/api/system/file";
-import {reviewStatus} from "@/enum/dict";
-import {getSubTwoLevelAPI, getVersionManagePageAPI, updateStatus, versionManageDeleteAPI} from "@/api/versionManage";
-import indexSearch from "@/views/versionManage/components/index-search.vue";
-import {getSubPage} from "@/api/classifyManage";
-import {getByCode} from "@/api/system/dictionary-data";
+  import addOrEditDialog from './components/addOrEditDialog.vue';
+  import { getFile } from '@/api/system/file';
+  import { getTableList, addInformation } from '@/api/appUpdate';
+
+  export default {
+    name: 'technologyProduction',
+    components: {
+      addOrEditDialog
+    },
+    data() {
+      return {
+        // 表格列配置
+        columns: [
+          {
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center'
+          },
+          {
+            prop: 'versionCode',
+            label: '版本号',
+            showOverflowTooltip: true,
+            align: 'center'
+          },
 
 
-export default {
-  name: 'technologyProduction',
-  components: {
-    FileUpload,
-    indexSearch,
-    addOrEditDialog
-  },
-  mixins: [dictMixins],
-  data() {
-    return {
-      levelOptions: [
-        {
-          label: '初级',
-          value: '1'
-        },
-        {
-          label: '中级',
-          value: '2'
-        },
-        {
-          label: '高级',
-          value: '3'
-        }
-      ],
-      isView: false,
-      // 表格列配置
-      columns: [
-        {
-          columnKey: 'selection',
-          type: 'selection',
-          width: 45,
-          align: 'center',
-          fixed: 'left'
-        },
-        {
-          label: '序号',
-          type: 'index',
-          width: 55,
-          align: 'center'
-        },
-        {
-          slot: 'name',
-          prop: 'name',
-          label: '名称',
-          showOverflowTooltip: true,
-          align: 'center',
-          minWidth: 110
-        },
-        {
-          slot: 'type',
-          prop: 'type',
-          label: '分类',
-          showOverflowTooltip: true,
-          align: 'center',
-          formatter: (row, column) => {
-            return this.getDictV('version_rule_type',row.type) ;
+          {
+            prop: 'releaseNotes',
+            label: '发布说明',
+            showOverflowTooltip: true,
+            align: 'center'
           },
           },
-          minWidth: 110
-        },
-        {
-          slot: 'getExample',
-          prop: 'getExample',
-          label: '规则示例',
-          showOverflowTooltip: true,
-          align: 'center',
-          formatter: (_row, _column, cellValue) => {
-            let value = _row.note || (_row.noteType == 1 ? 'A' : '1')
-            return value + _row.mark + _row.versionNumber
+          {
+            slot: 'fileUrl',
+            prop: 'fileUrl',
+            label: '下载安装包',
+            showOverflowTooltip: true,
+            align: 'center'
           },
           },
-          minWidth: 120
-        },
-        {
-          label: '是否启用',
-          prop: 'status',
-          slot: 'status',
-          align: "center",
-          width: 120,
-        },
-        {
-          columnKey: 'action',
-          label: '操作',
-          width: 260,
-          align: 'center',
-          resizable: false,
-          slot: 'action',
-          showOverflowTooltip: true
-        }
-      ],
-      // 表格选中数据
-      selection: [],
-      dictList: {},
-      // 当前编辑数据
-      current: null,
-      typeList: [],
-      // 是否显示编辑弹窗
-      addOrEditDialogFlag: false,
-    };
-  },
-  created() {
-    this.getTypeList()
-  },
-  computed: {},
-  methods: {
-    // getTypeName(list, val, callBack) {
-    //   let find = list.find(item => callBack(item, val)) || {}
-    //   if (find.name) {
-    //     return find.name
-    //   } else {
-    //     for (let i = 0; i < list.length; i++) {
-    //       let find = list[i].subList.find(item => callBack(item, val)) || {}
-    //       if (find.name) {
-    //         return find.name
-    //       }
-    //     }
-    //   }
-    // },
-    getDictV(code, val) {
-      if (!this.dictList[code]) return '';
-      return this.dictList[code].find(item => item.value == val)?.label
-    },
-    async getDictList(code) {
-      let {data: res} = await getByCode(code)
-      this.dictList[code] = res.map(item => {
-        let values = Object.keys(item)
-        return {
-          value: values[0],
-          label: item[values[0]]
-        }
-      })
-    },
-    /* 表格数据源 */
-    async datasource({page, limit, where, order}) {
-      await this.getDictList('version_rule_type')
-      return await getVersionManagePageAPI({
-        ...where,
-        ...order,
-        pageNum: page,
-        size: limit
-      });
-    },
-    handleStatus(scope, val) {
-      let msg = val == 1 ? '是否启用该规则' : '是否关闭该规则'
-      this.$confirm(msg, '提示', {
-        type: 'warning'
-      }).then(async () => {
-        await updateStatus(
           {
           {
-            id: scope.row.id,
-            status: val
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true
           }
           }
-        )
-        this.$message.success('操作成功')
-      }).catch(() => {
-        scope.row.status = val == 1 ? 0 : 1
-      })
+        ],
 
 
+        // 是否显示编辑弹窗
+        addOrEditDialogFlag: false
+      };
     },
     },
-    async getTypeList() {
-      this.typeList = await getSubTwoLevelAPI({
-        parentId: 0,
-        pageNum: 1,
-        size: 9999
-      })
 
 
-      console.log(this.typeList);
-    },
-    downloadFile(file) {
-      getFile({objectName: file.storePath}, file.name);
-    },
-    /* 刷新表格 */
-    reload(where) {
-      this.$refs.table.reload({page: 1, where: where});
-    },
-    /* 打开编辑弹窗 */
-    openEdit(row = {}, type) {
-      this.addOrEditDialogFlag = true
-      this.$nextTick(() => {
-        this.$refs.addOrEditDialogRef.init(type, {...row})
-      })
-    },
-    /* 删除 */
-    remove(row) {
-      const loading = this.$loading({lock: true});
-      versionManageDeleteAPI([row.id])
-        .then((msg) => {
-          loading.close();
-          this.$message.success('删除成功');
-          this.reload();
-        })
-        .catch((e) => {
-          loading.close();
-          // this.$message.error(e.message);
+    computed: {},
+    methods: {
+      /* 表格数据源 */
+      async datasource({ page, limit, where, order }) {
+        return await getTableList({
+          ...where,
+          ...order,
+          pageNum: page,
+          size: limit
         });
         });
-    },
-    /* 批量删除 */
-    removeBatch() {
-      if (!this.selection.length) return this.$message.error('请至少选择一条数据');
-      if (this.selection.some(item => item.status == 1)) return this.$message.error('启用状态的规则不允许删除!请检查');
-      this.$confirm('确定要删除选中的规则吗?', '提示', {
-        type: 'warning'
-      }).then(() => {
-        const loading = this.$loading({lock: true});
-        versionManageDeleteAPI(this.selection.map((d) => d.id))
-          .then((msg) => {
-            loading.close();
-            this.$message.success('删除成功');
-            this.reload();
-          })
-          .catch((e) => {
-            loading.close();
-            // this.$message.error(e.message);
-          });
-      })
-        .catch(() => {
+      },
+
+      downloadFile(file) {
+        getFile({ objectName: file.fileStorePath }, '智慧工厂');
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where: where });
+      },
+      /* 打开编辑弹窗 */
+      openEdit(row = {}, type) {
+        this.addOrEditDialogFlag = true;
+        this.$nextTick(() => {
+          this.$refs.addOrEditDialogRef.init(type, { ...row });
         });
         });
+      }
     }
     }
-  }
-};
+  };
 </script>
 </script>