zhuangyunsheng 1 gadu atpakaļ
vecāks
revīzija
7183ad3d82

+ 0 - 11
src/api/policy/strive.js

@@ -26,17 +26,6 @@ export default {
         })
     },
 
-    saveDone: function (data) {
-        return request({
-            url: "/qdport-zcgx/strive/saveDone",
-            method: "post",
-            data: {
-                ...data,
-                updateId: userInfo.id
-            }
-        })
-    },
-
     edit: function (data) {
         return request({
             url: "/qdport-zcgx/strive/update",

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 1
src/assets/svg/policy/decode.svg


+ 2 - 2
src/components/SvgIcon/index.vue

@@ -37,7 +37,7 @@ export default defineComponent({
 
 <style scope lang="scss">
 .svg-icon {
-  width: 1em;
-  height: 1em;
+  width: 24px;
+  height: 24px;
 }
 </style>

+ 2 - 2
src/views/manage/policyShare/index.vue

@@ -58,8 +58,8 @@
                     <template #default="scope">
                         <el-button type="primary" link icon="edit" @click="table_edit(scope.row)">修改</el-button>
                         <el-button v-if="scope.row.inWhType == '文件类'" type="primary" link @click="table_edit(scope.row, 'decode')">
-                            <el-icon><svg-icon #icon icon-class="policy-decode" /></el-icon>
-                            <span>添加解读</span>
+                            <template #icon><tjm-icon-fluent-emoji-high-contrast-open-book /></template>
+                            添加解读
                         </el-button>
                         <el-button type="primary" link icon="delete" @click="table_del(scope.row)">删除</el-button>
                     </template>

+ 0 - 233
src/views/manage/policyShare/dialog.vue

@@ -1,233 +0,0 @@
-<template>
-    <el-dialog v-model="visible" :title="titleMap[mode]" :width="680" @closed="$emit('closed', fileIsDel)">
-        <el-form ref="formRef" :model="form" :rules="rules" label-width="110px">
-            <el-row>
-                <el-col v-if="form.id" :span="12">
-                    <el-form-item label="政策编号" prop="businessNo">
-                        <el-input v-model="form.businessNo" disabled></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="填报人">
-                        <el-input v-model="form.createName" disabled></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="填报部门">
-                        <el-input v-model="form.deptName" disabled></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="填报单位">
-                        <el-input v-model="form.companyName" disabled></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col v-if="form.id" :span="12">
-                    <el-form-item label="填报时间">
-                        <el-date-picker v-model="form.createTime" disabled format="YYYY-MM-DD HH:mm:ss"></el-date-picker>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="政策名称" prop="name">
-                        <el-input v-model="form.name" placeholder="请输入政策名称"></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="政策等级" prop="zcLevel">
-                        <el-select v-model="form.zcLevel" placeholder="请选择政策等级">
-                            <el-option v-for="item in levelDic" :key="item" :label="item" :value="item"></el-option>
-                        </el-select>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="政策类别" prop="zcType">
-                        <el-select v-model="form.zcType" placeholder="请选择政策类别">
-                            <el-option v-for="item in typeDic" :key="item" :label="item" :value="item"></el-option>
-                        </el-select>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="政策文号" prop="docNo">
-                        <el-input v-model="form.docNo" placeholder="请输入政策文号"></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="联系方式" prop="contactPhone">
-                        <el-input v-model="form.contactPhone" placeholder="请输入联系方式"></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24">
-                    <el-form-item label="政策概要" prop="abstractContent">
-                        <el-input v-model="form.abstractContent" type="textarea" :rows="4" placeholder="请输入政策概要"></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="是否入库">
-                        <el-radio-group v-model="form.isInWh" @change="form.inWhType = null">
-                            <el-radio v-for="(label, key) in whetherDic" :key="key" :label="label" :value="parseInt(key)"></el-radio>
-                        </el-radio-group>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="分值(0-10)">
-                        <el-input-number v-model="form.score" :min="0" :max="10" :step="0.1" :precision="2" controls-position="right" placeholder="请输入分值"></el-input-number>
-                    </el-form-item>
-                </el-col>
-                <el-col v-if="form.isInWh == 1" :span="12">
-                    <el-form-item label="入库类型" prop="inWhType">
-                        <el-select v-model="form.inWhType" placeholder="请选择入库类型">
-                            <el-option v-for="item in storageTypeDic" :key="item" :label="item" :value="item"></el-option>
-                        </el-select>
-                    </el-form-item>
-                </el-col>
-                <el-col v-if="mode == 'decode'" :span="24">
-                    <el-form-item label="政策解读" prop="decodeContent">
-                        <el-input v-model="form.decodeContent" type="textarea" :rows="4" placeholder="请输入政策解读"></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="24">
-                    <el-form-item label="附件">
-                        <yhUpload v-model="form.fileList" :limit="10" @updateTable="fileIsDel = true">
-                            <el-button type="primary" icon="upload" size="small"></el-button>
-                        </yhUpload>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-        </el-form>
-
-        <template #footer>
-            <el-button type="primary" @click="submit">确 定</el-button>
-        </template>
-    </el-dialog>
-</template>
-
-<script>
-import Common from "@/api/common";
-import API from "@/api/policy/share";
-import { useUserStore } from "@/store/user";
-import { levelDic, typeDic, whetherDic, storageTypeDic } from "@/views/policyShare/main";
-import yhUpload from "@/components/Upload/index.vue";
-
-const { userInfo } = useUserStore(); // store 用户
-
-export default {
-    emits: ["success", "closed"],
-    components: {
-        yhUpload
-    },
-
-    data() {
-        return {
-            levelDic, typeDic, whetherDic, storageTypeDic,
-            visible: false,
-            mode: "add",
-            titleMap: {
-                add: "新增",
-                edit: "修改",
-                decode: "添加解读"
-            },
-            form: {
-                id: null,
-                businessNo: null,
-                status: null,
-                createId: userInfo.id,
-                createName: userInfo.name,
-                createTime: null,
-                name: null,
-                companyName: null,
-                deptName: null,
-                zcLevel: null,
-                zcType: null,
-                docNo: null,
-                contactPhone: null,
-                abstractContent: null,
-                decodeContent: null,
-                score: null,
-                isInWh: 1,
-                inWhType: null,
-                fileList: []
-            },
-
-            rules: {
-                businessNo: [{ required: true }],
-                name: [{ required: true, message: "请输入政策名称" }],
-                zcLevel: [{ required: true, message: "请选择政策等级" }],
-                zcType: [{ required: true, message: "请选择政策类别" }],
-                docNo: [{ required: true, message: "请输入政策文号" }],
-                contactPhone: [{ required: true, message: "请输入联系方式" }],
-                abstractContent: [{ required: true, message: "请输入政策概要" }],
-                inWhType: [{ required: true, message: "请选择入库类型" }],
-                decodeContent: [{ required: true, message: "请输入政策解读" }]
-            },
-
-            fileIsDel: false,
-            dialog: false
-        }
-    },
-
-    mounted() {
-        this.getUserDept();
-    },
-
-    methods: {
-        init(mode = "add") {
-            this.mode = mode;
-            this.visible = true;
-            return this;
-        },
-
-        setData(id) {
-            API.detail(id).then(res => {
-                if (res.code === 200) {
-                    for (const key in this.form) {
-                        if (key == "fileList") {
-                            this.form[key] = res.data[key].map(file => ({ ...file, name: file.originalName, path: file.fileDomain + "/" + file.fileName }));
-                        } else if (key == "isInWh") this.form.isInWh = !!res.data[key] && res.data[key] || 0;
-                        else this.form[key] = res.data[key] || null;
-                    }
-                } else ElMessage.error(res.msg);
-            });
-        },
-
-        getUserDept() {
-            Common.getUserDept(userInfo.deptId).then(res => {
-                if (res.code === 200) {
-                    this.form.companyName = res.data.companyName;
-                    this.form.deptName = res.data.deptName;
-                }
-            });
-        },
-
-        // 表单提交方法
-        submit() {
-            this.$refs.formRef.validate(valid => {
-                if (valid) {
-                    const apiKey = this.mode == "add" && "saveDone" || "edit";
-                    API[apiKey](this.form).then(() => {
-                        ElMessage.success("操作成功");
-                        this.visible = false;
-                        this.fileIsDel = false;
-                        this.$emit("success", apiKey);
-                    });
-                } else {
-                    return false;
-                }
-            });
-        }
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-.el-input-number {
-  width: 100%;
-
-  :deep(.el-input) .el-input__wrapper {
-    padding: 1px 11px;
-
-    .el-input__inner {
-      text-align: unset;
-    }
-  }
-}
-</style>

+ 139 - 0
src/views/manage/policyStrive/index.vue

@@ -0,0 +1,139 @@
+<template>
+    <el-card class="tjm_card_style_custom">
+        <div class="tjm_card_title">查询表格</div>
+        <div class="tjm_card_select">
+            <el-form class="tjm_card_select_left" :model="params" inline label-width="80px" label-position="left">
+                <el-form-item label="项目名称">
+                    <el-input v-model="params.name" clearable placeholder="请输入项目名称"></el-input>
+                </el-form-item>
+                <el-form-item label="项目等级">
+                    <el-select v-model="params.zcLevel" clearable placeholder="请选择项目等级">
+                        <el-option v-for="item in levelDic" :key="item" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="项目类别">
+                    <el-select v-model="params.zcType" clearable placeholder="请选择项目类别">
+                        <el-option v-for="item in typeDic" :key="item" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="状态">
+                    <el-select v-model="params.isLand" clearable placeholder="请选择状态">
+                        <el-option v-for="(label, key) in statusDic" :key="key" :label="label" :value="parseInt(key)"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="填报时间">
+                    <el-date-picker v-model="createTime" type="daterange" value-format="YYYY-MM-DD" range-separator="-" start-placeholder="开始时间" end-placeholder="结束时间"></el-date-picker>
+                </el-form-item>
+
+                <el-form-item>
+                    <el-button type="primary" icon="search" @click="reloadTable">搜索</el-button>
+                    <el-button icon="refresh-right" @click="reset">重置</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+        <el-divider></el-divider>
+
+        <div class="tjm_card_tools">
+            <div class="tjm_card_tools_right">
+                <el-button icon="download" @click="table_export">导出</el-button>
+            </div>
+        </div>
+        <div class="tjm_card_table">
+            <el-table v-loading="loading" row-key="id" header-cell-class-name="tjm_card_table_header" height="400" :data="tableData" border>
+                <el-table-column type="index" width="50"></el-table-column>
+                <template v-for="(item, index) in columns" :key="index">
+                    <el-table-column :label="item.label" :prop="item.props" :width="item.width || 180" show-overflow-tooltip>
+                        <template #default="scope">{{ columnFormat(scope.row, item.props) }}</template>
+                    </el-table-column>
+                </template>
+                <el-table-column label="奖励分配人员" width="120">
+                    <template #default="scope">
+                        <el-button type="primary" link icon="download" @click="person_distribute">分配</el-button>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" fixed="right" width="100">
+                    <template #default="scope">
+                        <el-button type="primary" link icon="edit" @click="table_score(scope.row)">打分</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="tjm_card_pagination">
+            <yh-pagination v-model:pageNo="params.page" v-model:pageSize="params.size" :total="total" @paginationChange="reloadTable"></yh-pagination>
+        </div>
+    </el-card>
+</template>
+
+<script>
+import API from "@/api/policy/strive"
+import { exportExcel } from "@/utils/exportExcel";
+import { levelDic, typeDic } from "@/views/policyShare/main";
+import { columns, statusDic } from "./main";
+import yhPagination from "@/components/Pagination/index.vue";
+
+export default {
+    components: {
+        yhPagination
+    },
+
+    data() {
+        return {
+            columns, levelDic, typeDic, statusDic,
+
+            loading: false,
+            createTime: [],
+            params: {
+                page: 1,
+                size: 10,
+                status: "done"
+            },
+
+            total: 0,
+            tableData: []
+        }
+    },
+
+    mounted() {
+        this.reloadTable();
+    },
+
+    methods: {
+        columnFormat(row, props) {
+            if (props == "status") return statusDic[row["isLand"]] || "";
+            return row[props];
+        },
+
+        reloadTable(mode = "add") {
+            if (mode == "add") this.params.page = 1;
+            this.params.beginCreateTime = this.createTime && this.createTime.length && this.createTime[0] + " 00:00:00" || null;
+            this.params.endCreateTime = this.createTime && this.createTime.length && this.createTime[1] + " 23:59:59" || null;
+
+            this.loading = true;
+            API.get(this.params).then(res => {
+                this.loading = false;
+                if (res.code === 200) {
+                    this.tableData = res.data.records;
+                    this.total = res.data.total;
+                } else ElMessage.error(res.msg);
+            }).catch(() => this.loading = false);
+        },
+
+        reset() {
+            this.createTime = [];
+            for (const key in this.params) {
+                if (key == "page") this.params[key] = 1;
+                else if (key == "size") this.params[key] = 10;
+                else this.params[key] = null;
+            }
+            this.reloadTable();
+        },
+
+        table_export() {
+            const header = this.columns.map(c => c.label);
+            const data = this.tableData.map(v => this.columns.map(c => c.props).map(j => this.columnFormat(v, j)));
+
+            exportExcel(header, data, [], `${this.$route.name}.xlsx`);
+        }
+    }
+}
+</script>

+ 34 - 0
src/views/manage/policyStrive/main.js

@@ -0,0 +1,34 @@
+export const columns = [
+    { label: "政策编号", props: "businessNo" },
+    { label: "状态", props: "status", width: "100" },
+    { label: "项目名称", props: "name" },
+    { label: "项目概要", props: "abstractContent" },
+    { label: "项目等级", props: "zcLevel", width: "100" },
+    { label: "项目类别", props: "zcType", width: "100" },
+    { label: "预计争取金额", props: "yjStriveAmount", width: "120" },
+    { label: "落地金额", props: "landAmount", width: "120" },
+    { label: "预计完成时间", props: "yjFinishTime", width: "120" },
+    { label: "实际完成时间", props: "", width: "120" },
+    { label: "填报人", props: "createName" },
+    { label: "填报部门", props: "deptName" },
+    { label: "填报单位", props: "companyName" },
+    { label: "联系方式", props: "contactPhone" },
+
+    { label: "考核基数", props: "rewardRadix", width: "100" },
+    { label: "实施难易程度", props: "implementScore" },
+    { label: "复制推广潜力", props: "promotionScore" },
+    { label: "政策争取效果", props: "striveScore" },
+    { label: "奖励标准", props: "rewardScore" }
+]
+
+export const statusDic = {
+    0: "争取中",
+    1: "已落地"
+}
+
+// 考核基数
+export const rewardRadixDic = {
+    "国家级": 30,
+    "省部级": 20,
+    "市区级": 10
+}

+ 1 - 1
src/views/policyShare/approve.vue

@@ -12,7 +12,7 @@
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="分值(0-10)" :prop="!isMaster && 'score'">
-                        <el-input-number v-model="form.score" :min="0" :max="10" :step="0.1" :precision="2" controls-position="right" placeholder="请输入分值"></el-input-number>
+                        <el-input-number v-model="form.score" :min="0" :max="10" :step="0.1" :precision="2" :controls="false" placeholder="请输入分值"></el-input-number>
                     </el-form-item>
                 </el-col>
                 <el-col v-if="form.isInWh == 1" :span="12">

+ 6 - 6
src/views/policyShare/main.js

@@ -12,15 +12,15 @@ export const columns = [
     { label: "考核评分", props: "score", width: "100" },
     { label: "是否入库", props: "isInWh", width: "100" },
     { label: "入库类别", props: "inWhType", width: "100" },
-];
+]
 
-export const levelDic = ["国家级", "省部级", "市区级"];
-export const typeDic = ["财税政策", "人才支持", "市场开拓", "智慧创新", "招商引资", "技术改造", "法律法规", "营商环境", "企业管理"];
-export const storageTypeDic = ["文件类", "解读类"];
-export const whetherDic = { 0: "否", 1: "是" };
+export const levelDic = ["国家级", "省部级", "市区级"]
+export const typeDic = ["财税政策", "人才支持", "市场开拓", "智慧创新", "招商引资", "技术改造", "法律法规", "营商环境", "企业管理"]
+export const storageTypeDic = ["文件类", "解读类"]
+export const whetherDic = { 0: "否", 1: "是" }
 export const statusDic = {
     active: "保存",
     approve: "审核",
     done: "审核通过",
     inactive: "退回"
-};
+}

+ 1 - 1
src/views/policyStrive/dialog.vue

@@ -58,7 +58,7 @@
                 </el-col>
                 <el-col :span="12">
                     <el-form-item label="预计争取金额" prop="yjStriveAmount">
-                        <el-input-number v-model="form.yjStriveAmount" :min="0" :step="0.1" :precision="2" controls-position="right" placeholder="请输入预计争取金额"></el-input-number>
+                        <el-input-number v-model="form.yjStriveAmount" :min="0" :step="0.1" :precision="2" :controls="false" placeholder="请输入预计争取金额"></el-input-number>
                     </el-form-item>
                 </el-col>
                 <el-col :span="12">

+ 1 - 1
src/views/policyStrive/explain.vue

@@ -12,7 +12,7 @@
             <template v-if="form.isLand == 1">
                 <el-col :span="12">
                     <el-form-item label="落地金额" prop="landAmount">
-                        <el-input-number v-model="form.landAmount" :min="0" :step="0.1" :precision="2" controls-position="right" placeholder="请输入落地金额"></el-input-number>
+                        <el-input-number v-model="form.landAmount" :min="0" :step="0.1" :precision="2" :controls="false" placeholder="请输入落地金额"></el-input-number>
                     </el-form-item>
                 </el-col>
                 <el-col :span="24">

+ 2 - 2
src/views/policyStrive/main.js

@@ -15,11 +15,11 @@ export const columns = [
     { label: "填报单位", props: "companyName" },
     { label: "联系方式", props: "contactPhone" },
     { label: "填报时间", props: "createTime" }
-];
+]
 
 export const statusDic = {
     active: "保存",
     approve: "审核",
     done: "争取中",
     inactive: "退回"
-};
+}

+ 2 - 2
src/views/toDo/index.vue

@@ -35,8 +35,8 @@
                 <el-table-column label="填报时间" prop="zcCreateTime" width="180" show-overflow-tooltip></el-table-column>
                 <el-table-column label="操作" fixed="right" width="160">
                     <template #default="scope">
-                        <el-button type="primary" link icon="check" @click="table_detail(scope.row)">通过</el-button>
-                        <el-button type="primary" link icon="close" @click="table_detail(scope.row, 'refuse')">退回</el-button>
+                        <el-button type="primary" link icon="circle-check" @click="table_detail(scope.row)">通过</el-button>
+                        <el-button type="primary" link icon="circle-close" @click="table_detail(scope.row, 'refuse')">退回</el-button>
                     </template>
                 </el-table-column>
             </el-table>