沈丘营商办后台前端项目
wjt
2024-06-19 0a87fb00f345fa192705cfcaa753d304ff7fe1f3
部分页面添加
2个文件已添加
6个文件已修改
531 ■■■■ 已修改文件
src/api/system/company/company.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/mapList/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/banner/index.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/companymanger/index.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/complating/index.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/enforcement/index.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/policy/components/addNews.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/infomanger/policy/index.vue 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/system/company/company.ts
@@ -71,10 +71,11 @@
  })
}
// /system/doc/list 慧企政策列表
export function docList() {
export function docList(params) {
  return request({
    url: '/system/doc/list',
    method: 'get',
    params: params
  })
}
// 新增企业信息 /system/doc/add
@@ -156,4 +157,28 @@
    method: 'post',
    data: data
  })
}
// 执法评价项
export function listEvaluate(data) {
  return request({
    url: `/enforce/evaluate/detail`,
    method: 'get',
    params: data
  })
}
// 修改状态 /system/company/updStatus
export function updStatus(data) {
  return request({
    url: `/system/company/updStatus`,
    method: 'post',
    data: data
  })
}
// 执法评价管理 /enforce/evaluate/save
export function saveEvaluate(data) {
  return request({
    url: `/enforce/evaluate/save`,
    method: 'post',
    data: data
  })
}
src/utils/mapList/index.ts
@@ -17,4 +17,8 @@
export const scopeList = {
  0: '注册',
  1: '导入'
}
// 政策类型
export const policyType = {
  1: '惠企政策'
}
src/views/infomanger/banner/index.vue
@@ -1,9 +1,165 @@
<template>
  <div class="app-container">
    <el-row>
      <el-col :span="24">
        <el-button></el-button>
      </el-col>
    </el-row>
    <div class="form-content">
      <el-form inline :model="form.questionList" label-width="80px" :rules="rules">
        <div
          class="border"
          v-for="(item, index) in form.questionList"
          :key="index"
        >
          <div class="close-icon">
            <el-icon><Close /></el-icon>
          </div>
          <el-row>
            <el-col :span="24">
              <el-form-item label="试题内容" style="width: 100%" :prop="item.questionName">
                <el-input
                  placeholder="请输入"
                  v-model="item.questionName"
                  type="textarea"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row>
            <el-col :span="12">
              <el-form-item label="本题得分" :prop="item.questionScore">
                <el-input
                  type="number"
                  placeholder="请输入"
                  v-model="item.questionScore"
                  style="width: 200px"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="题目类型" :prop="item.questionType">
                <el-radio-group
                  placeholder="请输入"
                  v-model="item.questionType"
                >
                  <el-radio value="1">选择</el-radio>
                  <el-radio value="2">打分</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row v-if="item.questionType === '1'">
            <el-col :span="24">
              <el-form-item label="本题选项" style="width: 100%;"  :prop="item.answerList">
                  <div
                    v-for="(ele, childIndex) in item.answerList"
                    :key="index"
                    style="width: 100%;"
                    class="set-flex"
                  >
                    <div style="font-size: 14px;margin-right: 10px">{{ childIndex + 1 }}</div>
                    <el-input
                      v-model="ele.answerName"
                      placeholder="请输入"
                       style="width: 85%; margin-right: 10px"
                    ></el-input>
                    <el-checkbox v-model="ele.isScore" @change="changeValue($event, index, childIndex)"  :true-value="1" :false-value="0" :label="'是否计分'"/>
                  </div>
                <!-- </el-radio-group> -->
                <div class="mt10">
                  <el-button type="primary" plain @click="addOptions(index, item.questionName)">添加选项</el-button>
                </div>
              </el-form-item>
            </el-col>
          </el-row>
        </div>
        <div class="add-button" @click="addContent">添加执法项</div>
      </el-form>
      <div class="center mt20">
        <el-button @click="save" type="primary" style="width: 100%;padding: 20px 0">保存内容</el-button>
      </div>
    </div>
  </div>
</template>
</template>
<script lang="ts" setup>
import { listEvaluate, saveEvaluate } from '@/api/system/company/company'
import { ElMessage} from 'element-plus'
const tableData = ref([])
const addNewRef = ref()
const form: any = ref({
  questionList: []
})
const rules = ref({
  questionName: [
    {
      required: true,
      message: '请输入问题',
      trigger: 'blur'
    }
  ]
})
function getListEvaluate() {
  listEvaluate().then((val) => {
    tableData.value = val.data.questionList
  })
}
function addContent() {
  form.value.questionList.push({
    questionStatus: 0,
    questionType: '2',
    answerList: []
  })
}
function addOptions(index: number, name){
  form.value.questionList[index].answerList.push({
    questionName: name
  })
}
function save() {
  saveEvaluate({questionList: form.value.questionList}).then(val => {
    ElMessage.success('保存成功')
  })
}
function changeValue(event, index, childIndex) {
  // form.value.questionList[index].isScore = event.target.
  form.value.questionList[index].answerList.forEach((item: { isScore: number }) => {
    item.isScore = 0
  })
  form.value.questionList[index].answerList[childIndex].isScore = 1
}
getListEvaluate()
</script>
<style scoped lang="scss">
.form-content {
  width: 80%;
}
.border {
  border: 1px solid #e2e2e2;
  margin-bottom: 10px;
  padding: 30px;
  position: relative;
}
.close-icon {
  position: absolute;
  right: 10px;
  top: 10px;
  cursor: pointer;
}
.add-button {
  text-align: center;
  border: 1px dotted #979797;
  line-height: 40px;
  cursor: pointer;
  border-radius: 5px;
}
.set-flex{
  display: flex;
  justify-content: flex-start;
  margin-top: 10px
}
.center{
  text-align: center;
}
</style>
src/views/infomanger/companymanger/index.vue
@@ -1,17 +1,17 @@
<template>
  <div class="app-container">
    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="80px">
    <el-form :model="queryParams" ref="queryRef"  class="evenly-distributed-labels" :inline="true" v-show="showSearch" label-width="80px" label-position="left">
      <el-form-item label="企业名称" prop="companyName">
        <el-input v-model="queryParams.companyName" placeholder="请输入企业名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
      </el-form-item>
      <el-form-item label="企业编号" prop="companyCode">
        <el-input v-model="queryParams.companyCode" placeholder="请输入企业编号" clearable style="width: 200px" @keyup.enter="handleQuery" />
      </el-form-item>
      <el-form-item label="企业类型" prop="status">
      <!-- <el-form-item label="企业类型" prop="status">
        <el-select v-model="queryParams.status" placeholder="企业类型" clearable style="width: 200px">
          <el-option v-for="dict in sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
        </el-select>
      </el-form-item>
      </el-form-item> -->
      <el-form-item label="联系人" prop="companyUser">
        <el-input v-model="queryParams.companyUser" placeholder="请输入联系人" clearable style="width: 200px" @keyup.enter="handleQuery" />
      </el-form-item>
@@ -39,7 +39,7 @@
        <el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['system:dept:add']">新增</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button type="primary" plain icon="Plus" @click="exportExcel" v-hasPermi="['system:dept:add']">导入</el-button>
        <el-button type="primary" plain icon="Download" @click="exportExcel" v-hasPermi="['system:dept:add']">导入</el-button>
      </el-col>
      <!-- <el-col :span="1.5">
        <el-button type="primary" plain icon="Plus" @click="exportRecordComOpen" v-hasPermi="['system:dept:add']">导入记录</el-button>
@@ -79,13 +79,13 @@
      </el-table-column>
      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width" width="240">
        <template #default="scope">
          <el-link type="primary" v-if="scope.row.checkStatus < 2" v-hasPermi="['sys:company:check']" @click="checkJudge(scope.row)">审核</el-link>
          <el-link type="success" v-if="scope.row.checkStatus < 2" v-hasPermi="['sys:company:check']" @click="checkJudge(scope.row)">审核</el-link>
          <el-divider direction="vertical" v-hasPermi="['sys:company:check']" v-if="scope.row.checkStatus < 2"/>
          <el-link type="primary" v-if="scope.row.checkStatus == 2" @click="createQrcodeHandler(scope.row)">二维码</el-link>
          <el-divider direction="vertical" />
          <el-link type="info" v-if="scope.row.checkStatus == 2" @click="createQrcodeHandler(scope.row)">二维码</el-link>
          <el-divider direction="vertical"  v-if="scope.row.checkStatus == 2"/>
          <el-link type="primary" @click="handleAdd(scope.row)">编辑</el-link>
          <el-divider direction="vertical" />
          <el-link type="primary" @click="handleDelete(scope.row)">删除</el-link>
          <el-link type="error" @click="handleDelete(scope.row)">删除</el-link>
         </template>
      </el-table-column>
    </el-table>
@@ -114,7 +114,7 @@
          <el-input placeholder="请输入企业地址"  v-model="form.companyAddress"></el-input>
        </el-form-item>
        <el-form-item label="状态">
          <el-switch v-model="form.companyStatus" :active-value="1" :inactive-value="0"></el-switch>
          <el-switch v-model="form.companyStatus" :active-value="0" :inactive-value="1"></el-switch>
        </el-form-item>
        <el-form-item label="备注">
          <el-input placeholder="请输入备注" v-model="form.remark"></el-input>
@@ -139,7 +139,7 @@
import exportRecord from './components/exportRecord'
import createQrcode from './components/createQrcode'
import judgeCom from './components/judge'
import { listCompany,addCompany, updateCompany, delCompany } from "@/api/system/company/company";
import { listCompany,addCompany, updStatus, delCompany } from "@/api/system/company/company";
import exportExcelCom from './components/export'
import { computed } from "vue";
import { judgeStatus, companyStatus, scopeList } from '@/utils/mapList/index.ts'
@@ -182,11 +182,11 @@
  companyStatus: [
  {
      label: '正常',
      value: 1
      value: 0
    },
    {
      label: '禁用',
      value: 0
      value: 1
    },
  ],
  socreList: [
@@ -275,7 +275,9 @@
    form.value = row
    title.value = "编辑企业";
  } else {
    form.value = {}
    form.value = {
      companyStatus: 0
    }
    title.value = "添加企业";
  }
  open.value = true;
@@ -319,7 +321,7 @@
  if(loading.value){
    return
  }
  updateCompany(row).then(val => {
  updStatus(row).then(val => {
    proxy.$modal.msgSuccess("修改成功");
    getList();
  })
@@ -344,3 +346,19 @@
}
getList();
</script>
<style scoped lang="scss">
.evenly-distributed-labels {
  :deep(){
    .el-form-item__label {
      position: relative; /* 设置相对定位作为星号的定位基准 */
      text-align: justify;
      text-align-last: justify; /* 确保最后一行也两端对齐 */
      padding-left: 10px; /* 为星号预留空间 */
      display: inline-block;
    }
  }
}
</style>
src/views/infomanger/complating/index.vue
New file
@@ -0,0 +1,68 @@
<template>
  <div  class="app-container">
    <el-form inline ref="formRef" :model="form.queryParams" label-width="80px">
      <el-form-item label="投诉内容" prop="content">
        <el-input placeholder="请输入" v-model="form.queryParams.content"></el-input>
      </el-form-item>
      <el-form-item label="投诉对象">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="投诉人">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="执法记录">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="办理状态">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row class="mt20 mb10">
      <el-col>
        <el-button icon="Download" type="primary" plain>导出</el-button>
      </el-col>
    </el-row>
    <el-table>
      <el-table-column label="投诉企业"></el-table-column>
      <el-table-column label="投诉对象"></el-table-column>
      <el-table-column label="投诉类型"></el-table-column>
      <el-table-column label="投诉内容"></el-table-column>
      <el-table-column label="执法主题"></el-table-column>
      <el-table-column label="办理状态"></el-table-column>
      <el-table-column label="操作"></el-table-column>
    </el-table>
  </div>
</template>
<script lang="ts" setup>
const formRef = ref()
const form = reactive({
  queryParams: {
    content: ''
  }
})
function handleQuery() {
}
function resetQuery() {
  formRef.value.resetFields()
}
</script>
<style scoped lang="scss">
.evenly-distributed-labels {
  :deep(){
    .el-form-item__label {
      position: relative; /* 设置相对定位作为星号的定位基准 */
      text-align: justify;
      text-align-last: justify; /* 确保最后一行也两端对齐 */
      padding-left: 10px; /* 为星号预留空间 */
      display: inline-block;
    }
  }
}
</style>
src/views/infomanger/enforcement/index.vue
New file
@@ -0,0 +1,80 @@
<template>
  <div  class="app-container">
    <el-form inline class="evenly-distributed-labels" ref="formRef" :model="form.queryParams" label-width="80px">
      <el-form-item label="执法记录" prop="content">
        <el-input placeholder="请输入" v-model="form.queryParams.content"></el-input>
      </el-form-item>
      <el-form-item label="执法类型">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="执法时间">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="企业">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="执法部门">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="状态">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="执法结果">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item label="是否通知">
        <el-input placeholder="请输入"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
      </el-form-item>
    </el-form>
    <el-row class="mt20 mb10">
      <el-col>
        <el-button icon="Download" type="primary" plain>导出</el-button>
      </el-col>
    </el-row>
    <el-table>
      <el-table-column label="企业"></el-table-column>
      <el-table-column label="执法部门"></el-table-column>
      <el-table-column label="执法人"></el-table-column>
      <el-table-column label="执法类型"></el-table-column>
      <el-table-column label="执法主题"></el-table-column>
      <el-table-column label="申请时间"></el-table-column>
      <el-table-column label="执法时间"></el-table-column>
      <el-table-column label="状态"></el-table-column>
      <el-table-column label="执法结果"></el-table-column>
      <el-table-column label="是否通知企业"></el-table-column>
    </el-table>
  </div>
</template>
<script lang="ts" setup>
const formRef = ref()
const form = reactive({
  queryParams: {
    content: ''
  }
})
function handleQuery() {
}
function resetQuery() {
  formRef.value.resetFields()
}
</script>
<style scoped lang="scss">
.evenly-distributed-labels {
  :deep(){
    .el-form-item__label {
      position: relative; /* 设置相对定位作为星号的定位基准 */
      text-align: justify;
      text-align-last: justify; /* 确保最后一行也两端对齐 */
      padding-left: 10px; /* 为星号预留空间 */
      display: inline-block;
    }
  }
}
</style>
src/views/infomanger/policy/components/addNews.vue
@@ -2,28 +2,30 @@
<template>
  <el-dialog title="惠企政策" v-model="dialogVisible" width="900px" append-to-body @close="closeDialog">
    <div style="padding: 0 20px;">
      <el-form :mode="form" :rules="rules">
      <el-form-item label="政策类型" prop="docType">
        <el-select v-model="form.docType" placeholder="请选择" style="width: 200px">
          <el-option v-for="(item,index) in policyList" :label="item.label" :value="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="政策名称" prop="docTitle">
        <el-input v-model="form.docTitle" placeholder="请输入政策名称"></el-input>
      </el-form-item>
      <el-form-item label="政策内容" prop="docContent">
        <div><editPolicy v-model="form.docContent"></editPolicy></div>
      </el-form-item>
      <el-form-item label="状态" >
        <el-switch v-model="form.docStatus" :active-value="0" :inactive-value="1"></el-switch>
      </el-form-item>
    </el-form>
      <el-form :model="form" :rules="rules" ref="form" label-width="80px">
        <el-form-item label="政策类型" prop="docType">
          <el-select v-model="form.docType" placeholder="请选择" style="width: 200px">
            <el-option v-for="(item, index) in policyList" :label="item.label" :value="item.value"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="政策名称" prop="docTitle">
          <el-input v-model="form.docTitle" placeholder="请输入政策名称"></el-input>
        </el-form-item>
        <el-form-item label="政策内容" prop="docContent">
          <div>
            <editPolicy v-model="form.docContent"></editPolicy>
          </div>
        </el-form-item>
        <el-form-item label="状态">
          <el-switch v-model="form.docStatus" :active-value="0" :inactive-value="1"></el-switch>
        </el-form-item>
      </el-form>
    </div>
    <template v-slot:footer>
      <el-button type="primary" @click="addDoc">确认</el-button>
      <el-button type="primary" @click="addDocHandler">确认</el-button>
      <el-button @click="closeDialog">取消</el-button>
    </template>
</el-dialog>
  </el-dialog>
</template>
<script>
@@ -48,11 +50,18 @@
        docStatus: 0
      },
      rules: {
        docType:[{
        docType: [{
          required: true,
          message: '请输入政策名称',
          trigger: 'blur'
        }],
        docTitle: [
          {
            required: true,
            message: '请输入政策名称',
            trigger: 'blur'
          }
        ],
        docName: [
          {
            required: true,
@@ -75,7 +84,7 @@
      this.dialogVisible = false
    },
    openDialog(row) {
      if(row) {
      if (row) {
        this.form = row
        this.form.docContent = decodeURIComponent(row.docContent)
      } else {
@@ -85,21 +94,31 @@
      }
      this.dialogVisible = true
    },
    addDoc() {
      this.form.docContent = encodeURIComponent(this.form.docContent)
      if(this.form.docId) {
        updDoc(this.form).then(val => {
        this.$message.success('添加成功')
        this.closeDialog()
        this.$emit('upload')
    addDocHandler() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          const form = JSON.parse(JSON.stringify(this.form))
          form.docContent = encodeURIComponent(this.form.docContent)
          if (form.docId) {
            updDoc(form).then(val => {
              this.$message.success('添加成功')
              this.closeDialog()
              this.$emit('upload')
            }).catch(err => {
              console.log(err)
            })
          } else {
            addDoc(form).then(val => {
              this.$message.success('添加成功')
              this.closeDialog()
              this.$emit('upload')
            }).catch(err => {
              console.log(err.message)
            })
          }
        }
      })
      } else {
        addDoc(this.form).then(val => {
        this.$message.success('添加成功')
        this.closeDialog()
        this.$emit('upload')
      })
      }
    }
  }
}
src/views/infomanger/policy/index.vue
@@ -1,16 +1,16 @@
<template>
  <div  class="app-container">
    <el-form :inline="true" label-width="100px" :model="form">
    <el-form :inline="true" class="evenly-distributed-labels" :model="form" ref="form" label-position="left" label-width="80px">
      <el-form-item label="政策名称">
        <el-input placeholder="请输入" ></el-input>
        <el-input placeholder="请输入" v-model="form.docTitle"></el-input>
      </el-form-item>
      <el-form-item label="政策类型">
        <el-select placeholder="请选择" style="width: 200px;">
        <el-select placeholder="请选择" style="width: 200px;" v-model="form.docType">
          <el-option v-for="item in policyList" :label="item.label" :value="item.value"></el-option>
        </el-select>
      </el-form-item>
      <el-form-item label="状态">
        <el-select placeholder="请选择" style="width: 200px;">
        <el-select placeholder="请选择" style="width: 200px;" v-model="form.docStatus">
          <el-option v-for="item in statusList" :label="item.label" :value="item.value"></el-option>
        </el-select>
      </el-form-item>
@@ -26,7 +26,11 @@
    </el-row>
    <el-table :data="tableData" v-loading="loading" border>
      <el-table-column label="政策名称" prop="docTitle"></el-table-column>
      <el-table-column label="政策类型" prop="docType"></el-table-column>
      <el-table-column label="政策类型" prop="docType">
        <template #default="scope">
          {{ policyType[scope.row.docType] }}
        </template>
      </el-table-column>
      <el-table-column label="创建时间" prop="createTime"></el-table-column>
      <el-table-column label="创建人" width="200" prop="createBy"></el-table-column>
      <el-table-column label="状态" width="200" prop="docStatus">
@@ -38,11 +42,11 @@
        <template #default="scope">
          <el-link type="primary" @click="handleAdd(scope.row)">编辑</el-link>
          <el-divider direction="vertical" />
          <el-link type="primary" @click="delData(scope.row)">删除</el-link>
          <el-link type="error" @click="delData(scope.row)">删除</el-link>
        </template>
      </el-table-column>
    </el-table>
    <pagination v-show="queryParams.total > 0" :total="queryParams.total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
    <pagination v-show="queryParams.total > 0" :total="queryParams.total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="pageChange" />
      <addNews ref="addnews" :policyList="policyList" @upload="getList"></addNews>
   </div>
</template>
@@ -51,6 +55,7 @@
import { docList,updDoc, delDoc } from '@/api/system/company/company'
import addNews from './components/addNews'
import { ElMessageBox } from 'element-plus'
import { policyType } from '@/utils/mapList/index'
export default {
  components: {
    addNews
@@ -79,7 +84,9 @@
        pageSize: 10
      },
      tableData: [],
      loading: false
      loading: false,
      form: {},
      policyType
    }
  },
  created() {
@@ -87,9 +94,14 @@
    this.getList()
  },
  methods: {
    pageChange(e) {
      this.queryParams.pageNum = e.page
      this.queryParams.pageSize = e.limit
      this.getList()
    },
    // 获取列表
    getList() {
      docList(this.queryParams).then(res => {
      docList({...this.queryParams, ...this.form}).then(res => {
        this.tableData = res.rows
        this.queryParams.total = res.total
        this.loading = false
@@ -125,7 +137,26 @@
        this.getList()
      })
    })
   },
   resetQuery() {
    this.form = {}
    this.queryParams.pageNum = 1
    this.$refs.form.resetFields()
    this.getList()
   }
  }
}
</script>
</script>
<style scoped lang="scss">
.evenly-distributed-labels {
  :deep(){
    .el-form-item__label {
      position: relative; /* 设置相对定位作为星号的定位基准 */
      text-align: justify;
      text-align-last: justify; /* 确保最后一行也两端对齐 */
      padding-left: 10px; /* 为星号预留空间 */
      display: inline-block;
    }
  }
}
</style>