lrf402788946 5 lat temu
rodzic
commit
35ec156d7b

+ 6 - 0
src/router/index.js

@@ -12,6 +12,12 @@ const newPlan = [
     meta: { title: '新计划', sub: '管理' },
     component: () => import('@/views/new-plan/index.vue'),
   },
+  {
+    path: '/newPlan/detail',
+    name: 'newPlan_arrange',
+    meta: { title: '计划安排' },
+    component: () => import('@/views/new-plan/detail.vue'),
+  },
 ];
 
 const routes = [

+ 2 - 0
src/store/index.js

@@ -10,6 +10,7 @@ import schPlan from '@frame/store/sch-plan';
 import schimport from '@frame/store/sch-import';
 import login from '@frame/store/login';
 import dirPlan from '@frame/store/dir-plan';
+import util from '@frame/store/util';
 import * as ustate from '@frame/store/user/state';
 import * as umutations from '@frame/store/user/mutations';
 Vue.use(Vuex);
@@ -26,6 +27,7 @@ export default new Vuex.Store({
     leave,
     login,
     dirPlan,
+    util,
   },
   state: { ...ustate },
   mutations: { ...umutations },

+ 91 - 0
src/views/new-plan/detail.vue

@@ -0,0 +1,91 @@
+<template>
+  <div id="detail">
+    <list-frame :title="pageTitle" returns="./index" :needFilter="false" :needAdd="false">
+      <data-table :fields="fields" :data="list" :opera="opera" @namelist="toNamelist"></data-table>
+    </list-frame>
+    <el-dialog :visible.sync="dialog" title="上传名单" width="30%">
+      <el-form size="mini">
+        <el-form-item label="期数">{{ form.termnum }}</el-form-item>
+        <el-form-item label="人数">{{ form.number }}</el-form-item>
+        <el-form-item label="上传名单">
+          <el-upload class="upload-demo" action="/files/train/upload" :on-success="handleSuccess">
+            <el-button size="small" type="primary">点击上传</el-button>
+            <div slot="tip" class="el-upload__tip">不超过500kb</div>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import listFrame from '@frame/layout/admin/list-frame';
+import dataTable from '@frame/components/data-table';
+import { mapState, createNamespacedHelpers } from 'vuex';
+const { mapActions: schPlan } = createNamespacedHelpers('schPlan');
+const { mapActions: util } = createNamespacedHelpers('util');
+const { mapActions: imports } = createNamespacedHelpers('schimport');
+export default {
+  name: 'detail',
+  props: {},
+  components: { listFrame, dataTable },
+  data: function() {
+    return {
+      dialog: false,
+      info: {},
+      form: {},
+      list: [],
+      fields: [
+        { label: '期数', prop: 'termnum' },
+        { label: '人数', prop: 'number' },
+        { label: '需求车辆', prop: 'carnum' },
+      ],
+      opera: [
+        {
+          label: '上报名单',
+          icon: 'el-icon-document',
+          method: 'namelist',
+        },
+      ],
+    };
+  },
+  created() {
+    this.search();
+  },
+  methods: {
+    ...imports(['create']),
+    ...schPlan(['update']),
+    ...util(['fetch']),
+    async search() {
+      let res = await this.fetch({ model: 'schtime', planid: this.id, schid: this.user.code });
+      if (this.$checkRes(res)) {
+        let { term } = res.data;
+        this.$set(this, `info`, res.data);
+        this.$set(this, `list`, term);
+      }
+    },
+    toNamelist({ data }) {
+      this.$set(this, `form`, JSON.parse(JSON.stringify(data)));
+      this.dialog = true;
+    },
+    async handleSuccess(file, fileList) {
+      let res = await this.create({ filepath: file.uri, termid: this.form.termid, schid: this.user.code });
+      if (this.$checkRes(res, '上传成功', res.errmsg || '上传失败')) this.dialog = false;
+    },
+  },
+  computed: {
+    ...mapState(['user']),
+    pageTitle() {
+      return `${this.$route.meta.title}`;
+    },
+    id() {
+      return this.$route.query.id;
+    },
+  },
+  metaInfo() {
+    return { title: this.$route.meta.title };
+  },
+};
+</script>
+
+<style lang="less" scoped></style>

+ 9 - 1
src/views/new-plan/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div id="index">
     <list-frame :title="pageTitle" @query="search" :total="total" :needFilter="false" :needAdd="false">
-      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit"></data-table>
+      <data-table :fields="fields" :data="list" :opera="opera" @edit="toEdit" @arrange="toArrange"></data-table>
     </list-frame>
     <el-dialog title="上报需要请假的日期" width="30%" :visible.sync="dialog" center :destroy-on-close="true" @close="handleClose">
       <data-form :data="info" :fields="Ffields" :rules="rules" @save="handleSave" :isNew="!info.id" :styles="{ padding: 0 }" labelWidth="80px" :reset="false">
@@ -40,6 +40,11 @@ export default {
           icon: 'el-icon-date',
           method: 'edit',
         },
+        {
+          label: '查看计划安排',
+          icon: 'el-icon-document',
+          method: 'arrange',
+        },
       ],
       fields: [
         { label: '年度', prop: 'year' },
@@ -104,6 +109,9 @@ export default {
     toSort() {
       this.info.daterange.sort((a, b) => a - b);
     },
+    toArrange({ data }) {
+      this.$router.push({ path: './detail', query: { id: data.id } });
+    },
   },
   computed: {
     ...mapState(['user']),