Browse Source

履职计划

luojun 2 năm trước cách đây
mục cha
commit
2524eba591

+ 36 - 0
src/api/resumption/plan.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+
+// 查询【请填写功能名称】列表
+export function list(query) {
+  return request({
+    url: '/core/api/plan/find',
+    method: 'post',
+    data: query
+  })
+}
+
+// 查询【请填写功能名称】详细
+export function get(id) {
+  return request({
+    url: '/core/api/plan/find/' + id,
+    method: 'get'
+  })
+}
+
+
+// 修改【请填写功能名称】
+export function update(data) {
+  return request({
+    url: '/core/api/plan/edit',
+    method: 'post',
+    data: data
+  })
+}
+
+// 删除【请填写功能名称】
+export function delelte(id) {
+  return request({
+    url: '/core/api/plan/' + id,
+    method: 'delete'
+  })
+}

+ 335 - 0
src/views/resumption/plan/dialog.edit.vue

@@ -0,0 +1,335 @@
+<template>
+  <div class="rule-type">
+    <el-dialog
+      :title="id ? '编辑履职计划' : '新增履职计划'"
+      :visible.sync="isShow"
+      width="1500px"
+    >
+      <div class="page-body">
+        <el-form
+          :model="formData"
+          :rules="formDataRules"
+          size="small"
+          ref="form"
+          label-position="right"
+          label-width="130px"
+          label-prefix=":"
+        >
+          <el-row>
+            <el-col :span="6">
+              <el-form-item prop="planName" label="计划名称:">
+                <el-input
+                  v-model="formData.planName"
+                  :maxlength="50"
+                  name="planName"
+                  placeholder="请输入"
+                  clearable
+                />
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item prop="planType" label="计划类型:">
+                <el-select
+                  label="计划类型"
+                  v-model="formData.planType"
+                  placeholder="请选择计划类型"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in planType"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item prop="planCycle" label="履职周期:">
+                <el-select
+                  prop="planCycle"
+                  label="履职周期"
+                  v-model="formData.planCycle"
+                  placeholder="请选择履职周期"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in planCycle"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item prop="planStatus" label="计划状态:">
+                <el-select
+                  prop="planStatus"
+                  label="计划状态"
+                  v-model="formData.planStatus"
+                  placeholder="请选择计划状态"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in statusOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row>
+            <el-col :span="6">
+              <el-form-item prop="execOrgType" label="履职机构类型:">
+                <el-select
+                  label="履职机构类型"
+                  v-model="formData.execOrgType"
+                  placeholder="请选择履职机构类型"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in execOrgType"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item prop="roleNames" label="履职角色:">
+                <el-select
+                  label="履职角色"
+                  v-model="formData.roleNames"
+                  placeholder="请选择履职角色"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in roleNames"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item prop="count" label="履职次数:">
+                <el-select
+                  prop="count"
+                  label="履职次数"
+                  v-model="formData.count"
+                  placeholder="请选择履职次数"
+                  clearable
+                >
+                  <el-option
+                    v-for="item in orgTypeOptions"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-form-item prop="description" label="备注">
+            <el-input
+              v-model="formData.description"
+              :maxlength="255"
+              clearable
+            />
+          </el-form-item>
+        </el-form>
+        <el-table :data="tableData" style="width: 100%">
+          <el-table-column
+            :prop="propItem.prop"
+            :label="propItem.label"
+            v-for="propItem in propList"
+            :key="propItem.prop"
+          >
+            <template v-slot="{ row }">
+              <span v-if="!propItem.component">{{ row[propItem.prop] }}</span>
+              <component
+                v-else
+                v-bind:is="propItem.component"
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                >删除</component
+              >
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="onHide">取消</el-button>
+        <el-button type="primary" @click="onSubmit">确定</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { mapState, mapMutations } from "vuex";
+import * as api from "@/api/resumption/plan";
+import { statusOptions } from "./../../commonOption";
+
+export default {
+  data() {
+    // const params = this.$route.params;
+    // let o1=options;
+    // let o=statusOptions;
+    // debugger
+    return {
+      propItem: "",
+      propList: [
+        {
+          label: "是否扫描",
+          prop: "name",
+        },
+        {
+          label: "必须履职",
+          prop: "date",
+        },
+        {
+          label: "履职内容库",
+          prop: "address",
+        },
+        {
+          label: "履职项",
+          prop: "address",
+        },
+        {
+          label: "履职内容",
+          prop: "address",
+        },
+        {
+          label: "履职区域",
+          prop: "address",
+        },
+        {
+          label: "履职项",
+          prop: "lc-component",
+          component: "el-button",
+        },
+      ],
+      row: "",
+      tableData: [
+        {
+          date: "2016-05-02",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1518 弄",
+        },
+        {
+          date: "2016-05-04",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1517 弄",
+        },
+        {
+          date: "2016-05-01",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1519 弄",
+        },
+        {
+          date: "2016-05-03",
+          name: "王小虎",
+          address: "上海市普陀区金沙江路 1516 弄",
+        },
+      ],
+      id: null,
+      isShow: false,
+      formData: this.reset(),
+      formDataRules: {
+        name: [{ required: true, message: "请输入履职内容库名称" }],
+        type: [{ required: true, message: "请选择履职类型" }],
+        orgType: [{ required: true, message: "请选择履职机构类型" }],
+        status: [{ required: true, message: "请选择状态" }],
+      },
+      statusOptions: statusOptions,
+    };
+  },
+  props: {
+    orgTypeOptions: {
+      type: Array,
+    },
+    ruleTypeOptions: {
+      type: Array,
+    },
+  },
+  watch: {},
+  computed: {
+    ...mapState([]),
+  },
+  methods: {
+    ...mapMutations([]),
+    reset() {
+      return {
+        id: null,
+        name: null,
+        type: null,
+        orgType: null,
+        status: null,
+        remark: null,
+      };
+    },
+    findItem(id){
+      this.loading = true;
+      api
+        .list(this.queryParams)
+        .then((response) => {
+          this.pageData = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+    async refresh(id, other) {
+      this.formData = id ? (await api.get(id)).data : this.reset(other);
+    },
+    async show(id, other = {}) {
+      this.id = id;
+      await this.refresh(id, other);
+      this.isShow = true;
+    },
+
+    // 事件
+    onHide() {
+      this.isShow = false;
+    },
+    onSubmit() {
+      this.$refs.form.validate(async (isValidate) => {
+        if (!isValidate) return;
+        await api.update(this.formData);
+        this.$emit("success");
+        this.onHide();
+      });
+    },
+
+    // 事件
+    //apimark//
+  },
+  mounted() {},
+  components: {},
+};
+</script>
+
+<style lang="scss" scoped>
+.brand_info {
+  .el-form {
+    width: 600px;
+    padding-top: 40px;
+  }
+}
+</style>

+ 417 - 0
src/views/resumption/plan/index.vue

@@ -0,0 +1,417 @@
+<template>
+  <div class="app-container">
+    <el-row :gutter="20">
+      <!--机构数据-->
+      <el-col :span="4" :xs="24">
+        <org-tree
+          v-model="queryParams.orgId"
+          @defaultKey="getDefaultKey"
+          @checkChange="checkChange"
+          @click="clickTreeNode"
+        ></org-tree>
+      </el-col>
+
+      <el-col :span="20" :xs="24">
+        <!--    搜索条件    -->
+        <el-form
+          :model="queryParams"
+          ref="search"
+          size="small"
+          :inline="true"
+          v-show="showSearch"
+          label-width="100px"
+        >
+        <el-form-item prop="planType" label="计划类型">
+            <el-select
+              prop="planType"
+              label="计划类型"
+              v-model="queryParams.planType"
+              placeholder="请选择计划类型"
+              clearable
+            >
+              <el-option
+                v-for="dict in dict.type.planType"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="resumptionRole" label="履职角色">
+            <el-select
+              prop="resumptionRole"
+              label="履职角色"
+              v-model="queryParams.resumptionRole"
+              placeholder="请选择履职角色"
+              clearable
+            >
+              <el-option
+                v-for="dict in dict.type.resumptionRole"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
+          </el-form-item>
+
+          <el-form-item prop="planCycle" label="履职周期">
+            <el-select
+              prop="planCycle"
+              label="履职周期"
+              v-model="queryParams.planCycle"
+              placeholder="请选择履职周期"
+              clearable
+            >
+              <el-option
+                v-for="item in dict.type.planCycle"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="planStatus" label="计划状态">
+            <el-select
+              prop="planStatus"
+              label="任务状态"
+              v-model="queryParams.planStatus"
+              placeholder="请选择任务状态"
+              clearable
+            >
+              <el-option
+                v-for="item in dict.type.planStatus"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item prop="planName" label="计划名称">
+            <el-select
+              prop="planName"
+              label="计划名称"
+              v-model="queryParams.planName"
+              placeholder="请输入计划名称"
+              clearable
+            >
+              <el-option
+                v-for="item in dict.type.planName"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button
+              type="primary"
+              icon="el-icon-search"
+              size="mini"
+              @click="getList"
+              >搜索</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:user: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:user: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:user:remove']"
+              >删除</el-button
+            > 
+          </el-col>-->
+
+          <right-toolbar
+            :showSearch.sync="showSearch"
+            @queryTable="getList"
+            :columns="columns"
+          ></right-toolbar>
+        </el-row>
+
+        <el-table
+          v-loading="loading"
+          :data="pageData"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column
+            type="index"
+            label="序号"
+            v-if="columns[0].visible"
+          ></el-table-column>
+          <el-table-column
+            prop="planName"
+            label="计划名称"
+            v-if="columns[1].visible"
+          ></el-table-column>
+          <el-table-column
+            prop="planType"
+            label="计划类型"
+            v-if="columns[2].visible"
+          >
+            <!-- <template slot-scope="r"
+              >{{ getLabel(dict.type.rule_type, r.row.type) }}
+            </template> -->
+          </el-table-column>
+          <el-table-column
+            prop="planCreateOrgName"
+            label="计划创建机构"
+            v-if="columns[3].visible"
+          >
+            <!-- <template slot-scope="r"
+              >{{ getLabel(dict.type.sys_org_type, r.row.execOrgType) }}
+            </template> -->
+          </el-table-column>
+          <el-table-column
+            prop="planOfOrgName"
+            label="计划所属机构"
+            v-if="columns[4].visible"
+          ></el-table-column>
+        
+          <el-table-column
+            prop="execOrgType"
+            label="履职机构类型"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+          <el-table-column
+            prop="roleNames"
+            label="履职角色"
+            v-if="columns[6].visible"
+          ></el-table-column>
+          <el-table-column
+            prop="planCycle"
+            label="履职周期"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+
+          <el-table-column
+            prop="count"
+            label="履职次数"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+          <el-table-column
+            prop="planExec"
+            label="履职时间"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+
+          <el-table-column
+            prop="modifiedName"
+            label="修改人"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+
+          <el-table-column
+            prop="planStatus"
+            label="计划状态"
+            v-if="columns[6].visible"
+          ></el-table-column>
+
+          <el-table-column label="操作">
+            <template slot-scope="r">
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-edit"
+                @click="onEdit(r.row.id)"
+                v-hasPermi="['system:user:edit']"
+              >修改</el-button>
+              <el-button
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="onDel(r.row.id)"
+                v-hasPermi="['system:user: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-col>
+    </el-row>
+    <dialog-edit
+      ref="editDialog"
+      @success="getList()"
+      :orgTypeOptions="dict.type.sys_org_type"
+      :ruleTypeOptions="dict.type.rule_type"
+    ></dialog-edit>
+  </div>
+</template>
+
+<script>
+import OrgTree from "@/components/orgTree";
+import { mapState, mapMutations } from "vuex";
+import DialogEdit from "./dialog.edit";
+import * as api from "@/api/resumption/plan";
+import { statusOptions, getLabel } from "./../../commonOption";
+
+export default {
+  name: "resumptionplan",
+  dicts: ["sys_org_type", "rule_type"],
+  components: {
+    DialogEdit,
+    OrgTree,
+  },
+  data() {
+    const { params, query } = this.$route;
+    return {
+      isShow: false,
+      loading: false,
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      total: 0,
+      queryParams: {
+        orgId: null,
+        planType: null,
+        resumptionRole: null,
+        planCycle: null,
+        planStatus: null,
+        planName: null,
+        pageNum:1,
+        pageSize:10,
+        ...query,
+      },
+      pageData: [],
+      // 列信息
+      columns: [
+        { key: 0, label: `序号`, visible: true },
+        { key: 1, label: `计划名称`, visible: true },
+        { key: 2, label: `计划类型`, visible: true },
+        { key: 3, label: `计划创建机构`, visible: true },
+        { key: 4, label: `计划所属机构`, visible: true },
+        { key: 5, label: `履职机构类型`, visible: true },
+        { key: 6, label: `履职角色`, visible: true },
+        { key: 7, label: `履职周期`, visible: true },
+        { key: 8, label: `履职次数`, visible: true },
+        { key: 9, label: `履职时间`, visible: true },
+        { key: 10, label: `修改人`, visible: true },
+        { key: 11, label: `计划状态`, visible: true },
+      ],
+    };
+  },
+  props: {},
+  watch: {},
+  computed: {
+    ...mapState([]),
+  },
+  methods: {
+    ...mapMutations([]),
+    getList() {
+      this.loading = true;
+      console.info(this.dict.type);
+      api
+        .list(this.queryParams)
+        .then((response) => {
+          this.pageData = response.data.records;
+          this.total = response.data.total;
+          this.loading = false;
+        })
+        .catch(() => {
+          this.loading = false;
+        });
+    },
+    getDefaultKey(key) {
+      this.queryParams.orgId = key;
+      this.getList();
+    },
+    handleAdd(id, other = {}) {
+      this.$refs.editDialog.show(id, other);
+    },
+    onEdit(id, other = {}) {
+      this.$refs.editDialog.show(id, other);
+    },
+    async onDel(id) {
+      await api.delRule(id);
+      this.getList();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.userId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.queryParams.orgId = undefined;
+      this.$refs.tree.setCurrentKey(null);
+      this.getList();
+    },
+    //单选框状态改变
+    checkChange(state) {
+      this.queryParams.checkSub = state;
+      this.getList();
+    },
+    // 节点单击事件
+    clickTreeNode(data) {
+      this.queryParams.orgId = data.id;
+      this.getList();
+    },
+    getStatusLabel(value) {
+      return getLabel(statusOptions, value);
+    },
+    getLabel(options, value) {
+      return getLabel(options, value);
+    },
+    //apimark//
+  },
+  mounted() {},
+};
+</script>
+
+<style lang="scss" scoped>
+.brand {
+}
+</style>