Bladeren bron

Merge branch 'master' of http://git.cc-lotus.info/financial_platform/admin-cms

guhongwei 5 jaren geleden
bovenliggende
commit
20ec8f742c

+ 1 - 0
src/layout/layout-part/menus.vue

@@ -58,6 +58,7 @@
         <el-menu-item-group>
           <el-menu-item index="/tInformationDelivery/index">政策发布管理</el-menu-item>
           <el-menu-item index="/tPolicyInterpretation/index">政策解读管理</el-menu-item>
+          <el-menu-item index="/tDeclarationApproval/index">政策申报历史记录</el-menu-item>
         </el-menu-item-group>
       </el-submenu>
        <el-menu-item index="/zhidao/index"> <i class="el-icon-s-grid"></i>指导单位管理</el-menu-item>

+ 278 - 0
src/layout/tDeclarationApproval/tDeclarationApprovalForm.vue

@@ -0,0 +1,278 @@
+<template>
+  <div id="tDeclarationApprovalForm">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <span class="shu"></span><span class="title">{{ formTitle }}</span>
+        </el-col>
+        <el-col :span="24" class="form">
+          <el-form :model="ruleForm" ref="ruleForm" label-width="100px" class="demo-ruleForm">
+            <el-col :span="12">
+              <el-form-item label="企业名称:">
+                <span>{{ ruleForm.company_name }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="政策名称:">
+                <span>{{ ruleForm.policy_declaration_title }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="联系人:">
+                <span>{{ ruleForm.contact }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="联系电话:">
+                <span>{{ ruleForm.phone }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="申请时间:">
+                <span>{{ getDate(ruleForm.create_time) }}</span>
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="补充说明:">
+                <span>{{ ruleForm.additional_explanation }}</span>
+              </el-form-item>
+            </el-col>
+
+            <el-col :span="24" v-for="(item, index) in ruleForm.declaration_matters" :key="index">
+              <el-col :span="12">
+                <el-form-item label="申报事项:">
+                  <span>{{ item.declaration}}</span>
+                </el-form-item>
+              </el-col>
+              <el-col :span="12">
+                <el-form-item label="附件:">
+                  <span><el-link :href="item.url" :download="item.name">{{item.name }}</el-link></span>
+                </el-form-item>
+              </el-col>
+            </el-col>
+
+          </el-form>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+  import uploadImage from '@/layout/custom/uploadImage.vue';
+  /*import uploadFile from '@/layout/custom/uploadFile.vue';*/
+  import WangEditor from '@/components/wang-editor.vue';
+  import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+  const { mapActions: tDeclarationApproval } = createNamespacedHelpers('tDeclarationApproval');
+  import _ from 'lodash';
+
+  export default {
+    name: 'tDeclarationApprovalForm',
+    props: {
+      ruleForm: null,
+    },
+    components: {
+      uploadImage,
+      /*uploadFile,*/
+      WangEditor,
+    },
+    data: () => ({
+      formTitle: '政策申报历史记录',
+      /*rules: {
+        title: [{ required: true, message: '请输入标题', trigger: 'blur' }],
+        type: [{ required: true }],
+        link: [{ required: false }],
+        issuing_organ: [{ required: true, message: '请输入发文机关', trigger: 'blur' }],
+        subject_classification: [{ required: true }],
+        subject_headings: [{ required: true }],
+        description: [{ required: true, message: '请输入内容', trigger: 'blur' }],
+      },*/
+    }),
+    created() {
+    },
+    mounted(){
+    },
+    computed: {},
+    methods: {
+      ...tDeclarationApproval([ 'fetch']),
+      submitForm() {
+        this.$emit('submitForm', { data: this.ruleForm });
+      },
+      resetForm() {
+        this.$emit('resetForm');
+      },
+      uploadSuccess({ data }) {
+        this.$set(this.ruleForm, 'image', data.uri);
+      },
+      remove(file) {
+        this.$set(this.ruleForm, 'image', '')
+      },
+      uploadFileSuccess({ data,file }) {
+        if(_.isArray(this.ruleForm.enclosure)){
+          this.$set(this.ruleForm.enclosure, this.ruleForm.enclosure.length,{name:file.name,url:data.uri});
+        }else {
+          this.$set(this.ruleForm, 'enclosure',[{name:file.name,url:data.uri}]);
+        }
+      },
+      removeFile(file) {
+        if(_.isArray(this.ruleForm.enclosure)){
+          let temp = this.ruleForm.enclosure.filter((val) => {
+            return val.url !== file.url;
+          });
+          this.$set(this.ruleForm, 'enclosure',temp);
+        }else {
+          this.$set(this.ruleForm, 'enclosure',[]);
+        }
+      },
+      changeType(value){
+        if(value && value === '2'){
+          this.$set(this.rules, 'link',[{ required: true }]);
+        }else{
+          this.$set(this.rules, 'link',[{ required: false }]);
+        }
+      },
+      async checkType(value){
+        let res = await this.fetch(value);
+        if(res.data.type === '2'){
+          this.$set(this.rules, 'link',[{ required: true }]);
+        }
+      },
+      getDate(val) {
+        if(val){
+          return this.format(new Date(Number(val)),'yyyy年MM月dd');
+        }
+        return '';
+      },
+      format(date,formatStr){
+        formatStr=formatStr.replace(/yyyy|YYYY/,date.getFullYear());
+        formatStr=formatStr.replace(/MM/,(date.getMonth()+1)>9?(date.getMonth()+1).toString():'0' + (date.getMonth()+1));
+        formatStr=formatStr.replace(/dd|DD/,date.getDate()>9?date.getDate().toString():'0' + date.getDate());
+        return formatStr;
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+  .form {
+    padding: 0 200px 0 0;
+  }
+
+  p {
+    padding: 0;
+    margin: 0;
+  }
+
+  .top .shu {
+    float: left;
+    width: 4px;
+    height: 20px;
+    background: rgba(233, 2, 29, 1);
+  }
+
+  .top .title {
+    float: left;
+    padding: 0 10px;
+    font-size: 16px;
+    font-family: Source Han Sans SC;
+    font-weight: bold;
+    color: rgba(40, 40, 40, 1);
+  }
+
+  /deep/ .el-textarea__inner {
+    min-height: 100px !important;
+  }
+
+  /deep/ .select {
+    width: 632px;
+  }
+
+  .selects {
+    width: 473px;
+    margin: 0 15px 0 0;
+  }
+
+  /deep/ .el-radio__input.is-checked + .el-radio__label {
+    color: #e9021d;
+  }
+
+  /deep/ .el-radio__input.is-checked .el-radio__inner {
+    border-color: #e9021d;
+    background: #e9021d;
+  }
+
+  /deep/ .el-checkbox__input.is-checked + .el-checkbox__label {
+    color: #e9021d;
+  }
+
+  /deep/ .el-checkbox__input.is-checked .el-checkbox__inner,
+  .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+    background-color: #e9021d;
+    border-color: #e9021d;
+  }
+
+  /deep/ .el-checkbox-button,
+  .el-checkbox-button__inner {
+    margin: 0 15px 0 0;
+  }
+
+  /deep/ .el-checkbox-button__inner {
+    padding: 7px 5px;
+    border: 1px solid #ccc;
+    border-radius: 5px;
+  }
+
+  /deep/ .el-checkbox-button__inner:hover {
+    color: #e9021d;
+  }
+
+  /deep/ .el-checkbox-button:first-child .el-checkbox-button__inner {
+    border-left: 1px solid #ccc;
+    border-radius: 5px;
+  }
+
+  /deep/ .el-checkbox-button:last-child .el-checkbox-button__inner {
+    border-radius: 5px;
+  }
+
+  /deep/ .el-checkbox-button.is-checked .el-checkbox-button__inner {
+    color: #e9021d;
+    background-color: #ffffff;
+    border-color: #e9021d;
+  }
+
+  /deep/ .el-checkbox-button.is-checked .el-checkbox-button__inner {
+    box-shadow: none;
+  }
+
+  /deep/ .el-switch.is-checked .el-switch__core {
+    border-color: #e9021d;
+    background-color: #e9021d;
+  }
+  /deep/ .el-form-item .el-form-item__label {
+    font-size: 16px;
+  }
+  /deep/ .el-form-item .el-form-item__content {
+    font-size: 16px;
+  }
+
+  .clickBtn .el-button {
+    width: 100px;
+    height: 40px;
+    padding: 0;
+    color: #ffffff;
+    background: #b9b9b9;
+    border-radius: 4px;
+    margin: 40px;
+  }
+
+  .clickBtn {
+    text-align: center;
+    margin: 40px 0;
+    border-top: 1px solid #ccc;
+  }
+
+  .clickBtn .el-button:first-child {
+    background-color: #e9021d;
+  }
+</style>

+ 367 - 0
src/layout/tDeclarationApproval/tDeclarationApprovalList.vue

@@ -0,0 +1,367 @@
+<template>
+  <div id="tDeclarationApprovalList">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="search">
+          <el-col :span="5">
+          <span>筛选条件:</span>
+          <el-select v-model="search.current_state" placeholder="请选择审核状态">
+            <el-option label="未审核" value="0"></el-option>
+            <el-option label="审核通过" value="1"></el-option>
+            <el-option label="审核拒绝" value="2"></el-option>
+            <el-option label="完成" value="10"></el-option>
+            <el-option label="停用" value="-1"></el-option>
+          </el-select>
+        </el-col>
+          <el-col :span="4">
+            <span>输入条件:</span>
+            <el-input v-model="search.company_name" :placeholder="placeholder" class="input"></el-input>
+          </el-col>
+          <!--<el-col :span="7">
+            <span>时间选择:</span>
+            <el-date-picker v-model="search.date" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"> </el-date-picker>
+          </el-col>-->
+          <el-col :span="8">
+            <el-button class="btnSearch" @click="toQuery">查询</el-button>
+            <el-button class="btnSearch qing" @click="toClear">清空</el-button>
+          </el-col>
+        </el-col>
+        <el-col :span="24">
+          <el-table
+                  ref="tableData"
+                  :data="tableData"
+                  tooltip-effect="dark"
+                  :default-sort="{ prop: 'date', order: 'descending' }"
+                  style="width: 100%"
+                  @selection-change="handleSelectionChange"
+          >
+            <!--<el-table-column type="selection" align="center"> </el-table-column>-->
+            <el-table-column type="index" label="序号" width="50" align="center"></el-table-column>
+            <el-table-column property="company_name" label="企业名称" align="center"> </el-table-column>
+            <el-table-column property="contact" label="联系人" align="center"> </el-table-column>
+            <el-table-column property="phone" label="联系电话" align="center"> </el-table-column>
+            <!--<el-table-column property="additional_explanation" label="补充说明" align="center"> </el-table-column>-->
+            <el-table-column label="申请时间" align="center">
+              <template slot-scope="scope">
+                <span>{{ getDate(scope.row.create_time) }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column property="policy_declaration_title" label="政策名称" align="center"> </el-table-column>
+            <!--<el-table-column label="单位" align="center">
+              <template slot-scope="scope">
+                <span>{{ scope.row.type === '1' ? '金融办' : scope.row.type === '2' ? '其他政府部门' : '工信厅'}}</span>
+              </template>
+            </el-table-column>-->
+            <el-table-column label="审核状态" align="center">
+              <template slot-scope="scope">
+                <span>{{ getState(scope.row.current_state)}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column property="current_result_description" label="审核意见" align="center"> </el-table-column>
+            <el-table-column label="审核时间" align="center">
+              <template slot-scope="scope">
+                <span>{{ getDate(scope.row.current_state_time) }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column property="current_approval" label="审核人" align="center"> </el-table-column>
+            <el-table-column label="操作" align="center" width="300px">
+              <template slot-scope="scope">
+                <!--<el-button size="mini" type="text" class="other" @click="updateState(scope.row,'10')" v-if="scope.row.current_state === '1'">完成</el-button>
+                <el-button size="mini" type="text" class="other" @click="updateState(scope.row,'-2')" v-if="scope.row.current_state === '0'">审核</el-button>
+                <el-button size="mini" type="text" class="other" @click="updateState(scope.row,'-1')">停用</el-button>-->
+                <el-button size="mini" type="text" class="view" icon="el-icon-view"
+                           @click="$router.push({ path: '/tDeclarationApproval/detail', query: { id: scope.row.id } })"></el-button>
+                <!--<el-button size="mini" type="text" class="edit" icon="el-icon-edit"
+                           @click="$router.push({ path: '/tPolicyDeclaration/detail', query: { id: scope.row.id } })"></el-button>-->
+                <!--<el-button size="mini" type="text" class="delete" icon="el-icon-delete"
+                           @click.prevent="deleteRow(scope.row.id)"></el-button>-->
+              </template>
+            </el-table-column>
+          </el-table>
+          <el-row>
+            <el-pagination
+                    @size-change="handleSizeChange"
+                    @current-change="handleCurrentChange"
+                    :current-page.sync="currentPage"
+                    :page-sizes="[10, 20, 30, 40]"
+                    :page-size.sync="limit"
+                    background
+                    layout="total, sizes, prev, pager, next, jumper"
+                    :total="total"
+            >
+            </el-pagination>
+          </el-row>
+        </el-col>
+      </el-col>
+    </el-row>
+    <el-dialog
+            :visible.sync="dialogVisible"
+            width="30%"
+    >
+      <el-image :src="elImage" style="height:100%;width:100% "></el-image>
+    </el-dialog>
+    <el-dialog title="审核意见" :visible.sync="dialogFormVisible" width="30%" @open="openDialog">
+      <el-input v-model="input" autocomplete="off" placeholder="请输入审核意见"></el-input>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="confirmClick">{{confirm}}</el-button>
+        <el-button @click="cancelClick">{{cancel}}</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  export default {
+    name: 'tDeclarationApprovalList',
+    props: {
+      tableData: null,
+      total: null,
+    },
+    components: {},
+    data: () => ({
+      placeholder: '请输入企业名称',
+      search: {},
+      currentPage: 1,
+      limit: 10,
+      dialogVisible: false,
+      elImage: '',
+      tempId:'',
+      tempState:'',
+      dialogFormVisible: false,
+      input:'',
+      confirm:'确定',
+      cancel:'取消',
+    }),
+    created() {
+    },
+    computed: {
+    },
+    methods: {
+      handleSelectionChange(val) {
+        this.multipleSelection = val;
+      },
+      deleteRow(id) {
+        this.$set(this, `currentPage`, 1);
+        this.$emit('deleteRow', {id: id, skip: 0, limit: this.limit, ...this.search});
+      },
+      handleSizeChange(val) {
+        this.$set(this, `currentPage`, 1);
+        this.$emit('select', {skip: 0, limit: val, ...this.search});
+      },
+      handleCurrentChange(val) {
+        this.$emit('select', {skip: (val - 1) * this.limit, limit: this.limit, ...this.search});
+      },
+      toQuery() {
+        this.$set(this, `currentPage`, 1);
+        this.$emit('select', {skip: 0, limit: this.limit, ...this.search});
+      },
+      toClear() {
+        let keys = Object.keys(this.search);
+        for (const key of keys) {
+          this.$set(this.search, `${key}`, '');
+        }
+      },
+      showImage(image) {
+        if(image){
+          this.$set(this, `elImage`, image);
+          this.$set(this, `dialogVisible`, true);
+        }else{
+          this.$set(this, `dialogVisible`, false);
+        }
+      },
+      getDate(val) {
+        if(val){
+          return this.format(new Date(Number(val)),'yyyy年MM月dd');
+        }
+        return '';
+      },
+      format(date,formatStr){
+        formatStr=formatStr.replace(/yyyy|YYYY/,date.getFullYear());
+        formatStr=formatStr.replace(/MM/,(date.getMonth()+1)>9?(date.getMonth()+1).toString():'0' + (date.getMonth()+1));
+        formatStr=formatStr.replace(/dd|DD/,date.getDate()>9?date.getDate().toString():'0' + date.getDate());
+        return formatStr;
+      },
+      publish(row){
+        if(row.publish_state === '1'){
+          this.$message.error('已发布');
+          return ;
+        }
+        this.$emit('publish', {row:row,skip: (this.currentPage - 1) * this.limit, limit: this.limit, ...this.search});
+  },
+      openDialog(){
+        this.$set(this, `input`, '');
+      },
+      confirmClick(){
+        this.$set(this, `dialogFormVisible`, false);
+        switch(this.tempState)
+        {
+          case '0':
+            break;
+          case '1':
+            break;
+          case '2':
+            break;
+          case '-1':
+            this.$emit('updateState', {id:this.tempId,state:this.tempState,result:this.input,skip: (this.currentPage - 1) * this.limit, limit: this.limit, ...this.search});
+            break;
+          case '-2':
+            this.$emit('updateState', {id:this.tempId,state:'1',result:this.input,skip: (this.currentPage - 1) * this.limit, limit: this.limit, ...this.search});
+            break;
+          case '10':
+            this.$emit('updateState', {id:this.tempId,state:this.tempState,result:this.input,skip: (this.currentPage - 1) * this.limit, limit: this.limit, ...this.search});
+            break;
+        }
+      },
+      cancelClick(){
+        this.$set(this, `dialogFormVisible`, false);
+        switch(this.tempState)
+        {
+          case '0':
+            break;
+          case '1':
+            break;
+          case '2':
+            break;
+          case '-1':
+            break;
+          case '-2':
+            this.$emit('updateState', {id:this.tempId,state:'2',result:this.input,skip: (this.currentPage - 1) * this.limit, limit: this.limit, ...this.search});
+            break;
+          case '10':
+            break;
+        }
+      },
+      updateState(row,state){
+        this.$set(this, `tempId`, row.id);
+        this.$set(this, `tempState`, state);
+        switch(state)
+        {
+          case '0':
+            break;
+          case '1':
+            break;
+          case '2':
+            break;
+          case '-1':
+            if(row.current_state === state){
+              this.$message.error('已停用');
+            }else{
+              this.$set(this, `confirm`, '停用');
+              this.$set(this, `cancel`, '取消');
+              this.$set(this, `dialogFormVisible`, true);
+            }
+            break;
+          case '-2':
+            this.$set(this, `confirm`, '审核通过');
+            this.$set(this, `cancel`, '审核拒绝');
+            this.$set(this, `dialogFormVisible`, true);
+            break;
+          case '10':
+            this.$set(this, `confirm`, '完成');
+            this.$set(this, `cancel`, '取消');
+            this.$set(this, `dialogFormVisible`, true);
+            break;
+        }
+      },
+      getState(val) {
+        switch(val)
+        {
+          case '0':
+            return '未审核';
+          case '1':
+            return '审核通过';
+          case '2':
+            return '审核拒绝';
+          case '10':
+            return '完成';
+          case '-1':
+            return '停用';
+        }
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+  /deep/ .el-checkbox__input.is-checked .el-checkbox__inner {
+    background-color: red;
+    border-color: red;
+  }
+
+  /deep/ .el-checkbox__input.is-indeterminate .el-checkbox__inner {
+    background-color: red;
+    border-color: red;
+  }
+
+  /deep/ .el-table th {
+    background-color: #f5f6fa;
+    padding: 8px 0;
+  }
+
+  /deep/ .el-table td {
+    padding: 11px 0;
+  }
+
+  .other {
+    color: #f36302;
+  }
+
+  .view {
+    color: #f36302;
+  }
+
+  .edit {
+    color: #2ccc02;
+  }
+
+  .delete {
+    color: #e9021d;
+  }
+
+  /deep/ .el-pagination {
+    padding: 26px 20px;
+  }
+
+  /deep/ .el-pagination.is-background .el-pager li:not(.disabled).active {
+    background-color: red;
+  }
+
+  .input {
+    width: 150px;
+  }
+
+  /deep/ .el-input__inner {
+    height: 35px;
+    line-height: 35px;
+  }
+
+  .btnSearch {
+    width: 80px;
+    height: 34px;
+    background: rgba(233, 2, 29, 1);
+    border-radius: 4px;
+    padding: 0;
+    color: #fff;
+  }
+
+  .qing {
+    background: rgba(185, 185, 185, 1);
+  }
+
+  .top {
+    height: 50px;
+    margin: 0 0 10px 0;
+  }
+
+  .search {
+    background: #ffffff;
+    width: 97%;
+    height: 35px;
+    margin: 20px;
+    margin-left: 0px;
+  }
+
+  .list {
+    padding: 0 20px;
+  }
+</style>

+ 8 - 0
src/router/index.js

@@ -193,6 +193,14 @@ const routes = [
     path: '/tPolicyInterpretation/detail',
     component: () => import('../views/tPolicyInterpretation/detail.vue'),
   },
+  {
+    path: '/tDeclarationApproval/index',
+    component: () => import('../views/tDeclarationApproval/index.vue'),
+  },
+  {
+    path: '/tDeclarationApproval/detail',
+    component: () => import('../views/tDeclarationApproval/detail.vue'),
+  },
 
   {
     path: '/login',

+ 4 - 0
src/store/tDeclarationApproval.js

@@ -29,6 +29,10 @@ const actions = {
         const res = await this.$axios.$delete(`${api.characterInfo}/${payload}`);
         return res;
     },
+    async state({ commit }, payload) {
+        const res = await this.$axios.$post(`${api.characterInfo}/state`,payload);
+        return res;
+    },
 };
 export default {
     namespaced: true,

+ 122 - 0
src/views/tDeclarationApproval/detail.vue

@@ -0,0 +1,122 @@
+<template>
+  <div id="detail">
+    <el-row>
+      <el-col :span="24">
+        <el-col :span="24" class="top">
+          <detailTopInfo :topTitle="topTitle" :display="display" @goBack="goBack"></detailTopInfo>
+        </el-col>
+        <el-col :span="24" class="main">
+          <tDeclarationApprovalForm :ruleForm="ruleForm" @submitForm="submitForm" @resetForm="resetForm"></tDeclarationApprovalForm>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+
+<script>
+  import detailTopInfo from '@/layout/custom/detailTopInfo.vue';
+  import tDeclarationApprovalForm from '@/layout/tDeclarationApproval/tDeclarationApprovalForm.vue';
+  import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+  const { mapActions: tDeclarationApproval } = createNamespacedHelpers('tDeclarationApproval');
+  const { mapActions: dictionary } = createNamespacedHelpers('dictionary');
+
+  export default {
+    name: 'detail',
+    props: {},
+    components: {
+      detailTopInfo, //头部导航
+      tDeclarationApprovalForm,
+    },
+    data: () => ({
+      display: 'block',
+      topTitle: '政策申报历史记录',
+      ruleForm: {},
+      loading: true,
+      subject_classification_list: [],
+      subject_headings_list: [],
+      company_description_list: [],
+    }),
+    created() {
+      this.select();
+      /*this.selectDict(['subject_classification','subject_headings','company_description']);*/
+    },
+    computed: {
+      id() {
+        return this.$route.query.id;
+      },
+      ...mapState(['user']),
+    },
+    methods: {
+      ...tDeclarationApproval(['create', 'delete', 'update', 'fetch', 'query','state']),
+      ...dictionary({dictQuery:'query'}),
+      // 返回
+      goBack() {
+        this.$router.go(-1);
+      },
+      async select() {
+        if (this.id) {
+          const res = await this.fetch(this.id);
+          this.$set(this, `ruleForm`, res.data);
+        }
+      },
+      filterDict(dict){
+        return dict.filter((val) => {
+          return val.name !== '不限';
+        });
+      },
+      async selectDict(arr) {
+        for (let value of arr) {
+          let res = await this.dictQuery({skip:0,limit:100,type:value});
+          this.$set(this, `${value}_list`, this.filterDict(res.data));
+        }
+      },
+      // 提交
+      async submitForm({ data }) {
+        /*if(!data.image){
+          this.$message.error('请上传图片');
+          return ;
+        }*/
+        let res;
+        if (this.id) {
+          if(data.current_state !== '0'){
+            this.$message.error('只有"未审核"的政策允许修改');
+            return ;
+          }
+          res = await this.update(data);
+          if (res.errcode === 0) {
+            this.$message({
+              message: '信息修改成功',
+              type: 'success',
+            });
+          }
+        } else {
+          data.current_approval_id = this.user.uid;
+          res = await this.create(data);
+          if (res.errcode === 0) {
+            this.$message({
+              message: '信息创建成功',
+              type: 'success',
+            });
+          }
+        }
+        if (this.$checkRes(res)) this.resetForm();
+      },
+      // 取消
+      resetForm() {
+        this.$router.push({ path: '/tDeclarationApproval/index' });
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+  .top {
+    height: 50px;
+    margin: 0 0 10px 0;
+  }
+  .main {
+    min-height: 765px;
+    background: #ffffff;
+    padding: 20px;
+  }
+</style>

+ 110 - 0
src/views/tDeclarationApproval/index.vue

@@ -0,0 +1,110 @@
+<template>
+  <div id="index">
+    <el-row>
+      <el-col :span="24" class="top">
+        <topInfo :topTitle="topTitle" :display="display" @add="add"></topInfo>
+      </el-col>
+      <el-col :span="24" class="main">
+        <el-col :span="24" class="list">
+          <tDeclarationApprovalList :tableData="tableData" :total="total" @deleteRow="deleteRow" @select="select" @updateState="updateState"></tDeclarationApprovalList>
+        </el-col>
+      </el-col>
+    </el-row>
+  </div>
+</template>
+<script>
+  import topInfo from '@/layout/custom/topInfo.vue';
+  import tDeclarationApprovalList from '@/layout/tDeclarationApproval/tDeclarationApprovalList.vue';
+  import { mapState, createNamespacedHelpers, mapGetters } from 'vuex';
+  const { mapActions: tDeclarationApproval } = createNamespacedHelpers('tDeclarationApproval');
+  const { mapActions: dictionary } = createNamespacedHelpers('dictionary');
+
+  export default {
+    name: 'index',
+    props: {},
+    components: {
+      topInfo, //头部导航
+      tDeclarationApprovalList, //列表
+    },
+    data: () => ({
+      topTitle: '政策申报历史记录',
+      display: '',
+      tableData: [],
+      total: 0,
+    }),
+    created() {
+      this.select();
+    },
+    computed: {
+      ...mapState(['user']),
+    },
+    methods: {
+      ...tDeclarationApproval(['create', 'delete', 'update', 'fetch', 'query','state']),
+      ...dictionary({dictQuery:'query'}),
+      async select({ skip = 0, limit = 10, ...info } = {}) {
+        const res = await this.query({ skip, limit, ...info });
+        if (this.$checkRes(res)) {
+          this.$set(this, `tableData`, res.data);
+          this.$set(this, `total`, res.total);
+        }
+      },
+      add() {
+        this.$router.push({ path: '/tDeclarationApproval/detail' });
+      },
+      async deleteRow({ id, skip = 0, limit = 10, ...info } = {}) {
+        const res = await this.delete(id);
+        this.$checkRes(res, '删除成功', '删除失败');
+        this.select({ skip, limit, ...info });
+      },
+      async publish({ row ,skip = 0, limit = 10, ...info } = {}){
+        let res = await this.update({id:row.id,publish_state:1,publish_state_description:'已发布',publish_time:new Date().getTime()});
+        this.$checkRes(res, '发布成功', '发布失败');
+        this.select({ skip, limit, ...info });
+      },
+      async updateState({ id ,state ,result,skip = 0, limit = 10, ...info } = {}){
+        let res = null;
+        switch(state)
+        {
+          case '0':
+            break ;
+          case '1':
+            res = await this.state({id:id,current_approval_id:this.user.uid,state:state,state_description:'',result_description:result});
+            this.$checkRes(res, '审核成功', '审核失败');
+            break;
+          case '2':
+            res = await this.state({id:id,current_approval_id:this.user.uid,state:state,state_description:'',result_description:result});
+            this.$checkRes(res, '审核成功', '审核失败');
+            break;
+          case '-1':
+            res = await this.state({id:id,current_approval_id:this.user.uid,state:state,state_description:'',result_description:result});
+            this.$checkRes(res, '停用成功', '停用失败');
+            break;
+          case '10':
+            res = await this.state({id:id,current_approval_id:this.user.uid,state:state,state_description:'',result_description:result});
+            this.$checkRes(res, '完成成功', '完成失败');
+            break;
+        }
+        this.select({ skip, limit, ...info });
+      },
+    },
+  };
+</script>
+
+<style lang="less" scoped>
+  .top {
+    height: 50px;
+    margin: 0 0 10px 0;
+  }
+  .main {
+    min-height: 765px;
+    background: #ffffff;
+  }
+  .search {
+    width: 97%;
+    height: 35px;
+    margin: 20px;
+  }
+  .list {
+    padding: 0 20px;
+  }
+</style>