Selaa lähdekoodia

feature(opms):
1、公众号调研问卷

niezch 2 vuotta sitten
vanhempi
commit
7d5ee25917

+ 27 - 0
src/api/plat/questionnaire.js

@@ -0,0 +1,27 @@
+/*
+ * @Author: niezch@dashoo.cn
+ * @Date: 2023-03-01 14:40:46
+ * @LastEditors: niezch@dashoo.cn
+ * @LastEditTime: 2023-03-01 16:32:10
+ * @Description: file content
+ * @FilePath: \opms_frontend\src\api\plat\questionnaire.js
+ */
+import micro_request from '@/utils/micro_request'
+
+const basePath = process.env.VUE_APP_ParentPath
+export default {
+  // 督办列表
+  getQuestionnaireList(query) {
+    return micro_request.postRequest(basePath, 'Questionnaire', 'GetList', query)
+  },
+  // 创建督办
+  createQuestionnaire(query) {
+    return micro_request.postRequest(basePath, 'Questionnaire', 'Create', query)
+  },
+  getEntityById(query) {
+    return micro_request.postRequest(basePath, 'Questionnaire', 'GetEntityById', query)
+  },
+  Update(query) {
+    return micro_request.postRequest(basePath, 'Questionnaire', 'Update', query)
+  },
+}

+ 83 - 0
src/views/plat/questionnaire/components/ReportEdit.vue

@@ -0,0 +1,83 @@
+<!--
+ * @Author: niezch@dashoo.cn
+ * @Date: 2023-02-16 15:55:15
+ * @LastEditors: niezch@dashoo.cn
+ * @LastEditTime: 2023-03-01 16:39:50
+ * @Description: file content
+ * @FilePath: \opms_frontend\src\views\plat\questionnaire\components\ReportEdit.vue
+-->
+<template>
+  <el-dialog :title="title" :visible.sync="dialogFormVisible" width="500px" @close="close">
+    <el-form ref="form" label-width="80px" :model="form">
+      <el-form-item label="单位名称" prop="unitName">
+        <el-input v-model="form.unitName" :disabled="true" placeholder="请输入单位名称" />
+      </el-form-item>
+
+      <el-form-item label="称呼" prop="objName">
+        <el-input v-model="form.objName" :disabled="true" placeholder="请输入称呼" />
+      </el-form-item>
+      <el-form-item label="职位" prop="objPosition">
+        <el-input v-model="form.objPosition" :disabled="true" placeholder="请输入职位" />
+      </el-form-item>
+      <el-form-item label="报表类型" prop="reportType">
+        <el-radio-group v-model="form.qstStatus">
+          <el-radio-group v-model="form.qstStatus">
+            <el-radio label="10">待跟进</el-radio>
+            <el-radio label="20">已跟进</el-radio>
+          </el-radio-group>
+        </el-radio-group>
+      </el-form-item>
+    </el-form>
+    <template #footer>
+      <el-button @click="close">取 消</el-button>
+      <el-button type="primary" @click="save">确 定</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+  import questionnaireApi from '@/api/plat/questionnaire'
+  import '@riophae/vue-treeselect/dist/vue-treeselect.css'
+  export default {
+    name: 'PostEdit',
+    data() {
+      return {
+        form: { unitName: undefined, objName: undefined, objPosition: undefined, qstStatus: '10' },
+        rules: {
+          reportName: [{ required: true, message: '报表名称不能为空', trigger: 'blur' }],
+          reportDesc: [{ required: true, message: '报表描述不能为空', trigger: 'blur' }],
+        },
+        title: '',
+        dialogFormVisible: false,
+      }
+    },
+    mounted() {},
+    methods: {
+      showEdit(row) {
+        this.title = '跟进'
+        this.getDetailsInfo(row.id)
+        this.dialogFormVisible = true
+      },
+      async getDetailsInfo(id) {
+        const { data: data } = await questionnaireApi.getEntityById({ id: id })
+        this.form = data
+      },
+      close() {
+        this.$refs['form'].resetFields()
+        this.form = this.$options.data().form
+        this.dialogFormVisible = false
+      },
+      save() {
+        this.$refs['form'].validate(async (valid) => {
+          if (valid) {
+            const { msg } = await questionnaireApi.Update(this.form)
+            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+
+            this.$emit('fetch-data')
+            this.close()
+          }
+        })
+      },
+    },
+  }
+</script>

+ 182 - 0
src/views/plat/questionnaire/index.vue

@@ -0,0 +1,182 @@
+<template>
+  <div class="user-management-container">
+    <vab-query-form>
+      <!-- <vab-query-form-left-panel :span="5">
+        <el-button v-permissions="['system:report:add']" icon="el-icon-plus" type="primary" @click="handleEdit($event)">
+          添加
+        </el-button>
+        <el-button
+          v-permissions="['system:report:delete']"
+          icon="el-icon-delete"
+          type="danger"
+          @click="handleDelete($event)">
+          删除
+        </el-button>
+      </vab-query-form-left-panel> -->
+      <vab-query-form-top-panel>
+        <el-form :inline="true" :model="queryForm" @submit.native.prevent>
+          <el-form-item label="单位名称" prop="unitName">
+            <el-input v-model.trim="queryForm.unitName" clearable placeholder="请输入单位名称" />
+          </el-form-item>
+          <el-form-item label="职位" prop="objPosition">
+            <el-input v-model.trim="queryForm.objPosition" clearable placeholder="请输入职位" />
+          </el-form-item>
+          <el-form-item label="称呼" prop="objName">
+            <el-input v-model.trim="queryForm.objName" clearable placeholder="请输入称呼" />
+          </el-form-item>
+          <el-form-item label="电话" prop="objPhone">
+            <el-input v-model.trim="queryForm.objPhone" clearable placeholder="请输入电话" />
+          </el-form-item>
+          <el-form-item label="跟进状态" prop="reportType">
+            <el-select v-model="queryForm.qstStatus" clearable placeholder="跟进状态">
+              <el-option label="待跟进" value="10" />
+              <el-option label="已跟进" value="20" />
+            </el-select>
+          </el-form-item>
+          <el-form-item>
+            <el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
+          </el-form-item>
+        </el-form>
+      </vab-query-form-top-panel>
+    </vab-query-form>
+
+    <el-table v-loading="listLoading" border :data="list" :height="height" @selection-change="setSelectRows">
+      <el-table-column align="center" show-overflow-tooltip type="selection" />
+
+      <el-table-column align="center" label="单位名称" prop="unitName" show-overflow-tooltip />
+      <el-table-column align="center" label="职位" prop="objPosition" show-overflow-tooltip />
+      <el-table-column align="center" label="称呼" prop="objName" show-overflow-tooltip />
+      <el-table-column align="center" label="电话" prop="objPhone" show-overflow-tooltip />
+      <el-table-column align="center" label="咨询事项" prop="csnMatters" show-overflow-tooltip />
+      <el-table-column align="center" label="跟进状态" prop="reportType">
+        <template #default="{ row }">
+          {{ row.qstStatus === '10' ? '待跟进' : '已跟进' }}
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="跟进情况" prop="followUp" show-overflow-tooltip />
+
+      <el-table-column align="center" label="创建时间" prop="createdTime">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createdTime, '{y}-{m}-{d} {h}:{i}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column align="center" label="操作" show-overflow-tooltip width="125">
+        <template #default="{ row }">
+          <el-button v-permissions="['system:report:edit']" type="text" @click="handleEdit(row)">跟进</el-button>
+        </template>
+      </el-table-column>
+      <template #empty>
+        <el-image class="vab-data-empty" :src="require('@/assets/empty_images/data_empty.png')" />
+      </template>
+    </el-table>
+    <el-pagination
+      background
+      :current-page="queryForm.pageNum"
+      :layout="layout"
+      :page-size="queryForm.pageSize"
+      :total="total"
+      @current-change="handleCurrentChange"
+      @size-change="handleSizeChange" />
+    <edit ref="edit" @fetch-data="fetchData" />
+  </div>
+</template>
+
+<script>
+  import questionnaireApi from '@/api/plat/questionnaire'
+  import Edit from './components/ReportEdit'
+
+  export default {
+    name: 'Post',
+    components: { Edit },
+    data() {
+      return {
+        list: [],
+        listLoading: true,
+        layout: 'total, sizes, prev, pager, next, jumper',
+        total: 0,
+        selectRows: '',
+        queryForm: {
+          pageNum: 1,
+          pageSize: 10,
+          unitName: undefined,
+          objPosition: undefined,
+          objName: undefined,
+          objPhone: undefined,
+          qstStatus: undefined,
+        },
+      }
+    },
+    computed: {
+      height() {
+        return this.$baseTableHeight(1)
+      },
+    },
+    created() {
+      this.fetchData()
+    },
+    methods: {
+      setSelectRows(val) {
+        this.selectRows = val
+      },
+      handleApplication(row) {
+        if (row.id) {
+          this.$refs['reportlist'].showEdit(row)
+        } else {
+          this.$refs['reportlist'].showEdit()
+        }
+      },
+      handleEdit(row) {
+        if (row.id) {
+          this.$refs['edit'].showEdit(row)
+        } else {
+          this.$refs['edit'].showEdit()
+        }
+      },
+      handleDelete(row) {
+        if (row.id) {
+          this.$baseConfirm('你确定要删除当前项吗', null, async () => {
+            const { msg } = await questionnaireApi.doDelete({ ids: [row.id] })
+            this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+            await this.fetchData()
+          })
+        } else {
+          if (this.selectRows.length > 0) {
+            let ids = []
+            for (let item of this.selectRows) {
+              ids.push(item.id)
+            }
+
+            this.$baseConfirm('你确定要删除选中项吗', null, async () => {
+              const { msg } = await questionnaireApi.doDelete({ ids })
+              this.$baseMessage(msg, 'success', 'vab-hey-message-success')
+              await this.fetchData()
+            })
+          } else {
+            this.$baseMessage('未选中任何行', 'error', 'vab-hey-message-error')
+          }
+        }
+      },
+      handleSizeChange(val) {
+        this.queryForm.pageSize = val
+        this.fetchData()
+      },
+      handleCurrentChange(val) {
+        this.queryForm.pageNum = val
+        this.fetchData()
+      },
+      queryData() {
+        this.queryForm.pageNum = 1
+        this.fetchData()
+      },
+      async fetchData() {
+        this.listLoading = true
+        const {
+          data: { list, total },
+        } = await questionnaireApi.getQuestionnaireList(this.queryForm)
+        this.list = list
+        this.total = total
+        this.listLoading = false
+      },
+    },
+  }
+</script>