chenying преди 3 години
родител
ревизия
7c552c1a36

+ 32 - 0
src/api/msg.js

@@ -0,0 +1,32 @@
+import request from '@/utils/httpRequest'
+
+// 我的消息审批页面分页列表
+export function getApprovalList (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/business/approval/list`),
+    method: 'get',
+    params: params
+  })
+}
+
+export function getApprovalInfo (businessId) {
+  return request({
+    url: request.adornUrl(`/biz-service/business/approval/info/${businessId}`),
+    method: 'get'
+  })
+}
+
+export function getAnnouncementList (params) {
+  return request({
+    url: request.adornUrl(`/biz-service/business/announcement/list`),
+    method: 'get',
+    params: params
+  })
+}
+
+export function getAnnouncementInfo (noticeId) {
+  return request({
+    url: request.adornUrl(`/biz-service/business/announcement/info/${noticeId}`),
+    method: 'get'
+  })
+}

Файловите разлики са ограничени, защото са твърде много
+ 0 - 0
src/icons/svg/icon-lingdang.svg


+ 2 - 1
src/router/index.js

@@ -34,7 +34,8 @@ const mainRoutes = {
     // 2. iframeUrl: 是否通过iframe嵌套展示内容, '以http[s]://开头': 是, '': 否
     // 提示: 如需要通过iframe嵌套展示内容, 但不通过tab打开, 请自行创建组件使用iframe处理!
     { path: '/home', component: _import('common/home'), name: 'home', meta: { title: '首页' } },
-    { path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } }
+    { path: '/theme', component: _import('common/theme'), name: 'theme', meta: { title: '主题' } },
+    { path: '/msg-center', component: _import('common/theme'), name: 'msgCenter', meta: { title: '我的消息中心' } }
     // { path: '/demo-echarts', component: _import('demo/echarts'), name: 'demo-echarts', meta: { title: 'demo-echarts', isTab: true } },
     // { path: '/demo-ueditor', component: _import('demo/ueditor'), name: 'demo-ueditor', meta: { title: 'demo-ueditor', isTab: true } }
   ],

+ 7 - 0
src/views/main-navbar.vue

@@ -17,6 +17,13 @@
       <el-menu
         class="site-navbar__menu site-navbar__menu--right"
         mode="horizontal">
+        <el-menu-item index="0" @click="$router.push({ name: 'msgCenter' })">
+          <template slot="title">
+            <el-badge value="1">
+              <icon-svg name="lingdang" class="el-icon-lingdang"></icon-svg>
+            </el-badge>
+          </template>
+        </el-menu-item>
         <el-menu-item index="1" @click="$router.push({ name: 'theme' })">
           <template slot="title">
             <el-badge value="">

+ 169 - 0
src/views/modules/msg-center/announcement-detail.vue

@@ -0,0 +1,169 @@
+<template>
+  <el-dialog
+    title="查看"
+    width="70%"
+    :close-on-click-modal="false"
+    :visible.sync="visible">
+    <el-form :model="dataForm" :rules="dataRule" ref="dataForm" label-width="auto">
+      <el-row class="my-row">
+        <el-col :span="12">
+          <el-form-item label="公告主题名称">
+            <el-input v-model="dataForm.title" :disabled="display" placeholder="请输入公告主题名称"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12" style="padding-left: 20px">
+          <el-form-item label="级别" prop="level">
+            <el-select
+              v-model="dataForm.level"
+              :disabled="display"
+              remote
+              placeholder="请选择">
+              <el-option
+                v-for="item in optionLevel"
+                :key="item.code"
+                :label="item.value"
+                :value="item.code">
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-col :span="12">
+          <el-form-item label="客户名称" prop="name">
+            <el-input v-model="dataForm.name" disabled placeholder="客户名称"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12" style="padding-left: 20px">
+          <el-form-item label="联系人" prop="cellName">
+            <el-input v-model="dataForm.cellName" disabled placeholder="联系人"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+      <el-row class="my-row">
+        <el-form-item label="备注说明">
+            <el-input v-model="dataForm.notes" :disabled="display" placeholder="备注说明"></el-input>
+        </el-form-item>
+      </el-row>
+      <el-row class="my-row">
+        <div class="title">沟通信息表附件</div>
+      </el-row>
+      <el-row class="my-row">
+        <div class="title"><span style="color: red">*</span> 合同评审表</div>
+        <el-upload
+          v-show="!display"
+          class="upload-demo"
+          ref="upload"
+          action="https://jsonplaceholder.typicode.com/posts/"
+          :on-preview="handlePreview"
+          :on-remove="handleRemove"
+          :file-list="fileList"
+          :auto-upload="false">
+          <el-button slot="trigger" size="small" type="primary">选取文件</el-button>
+          <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">开始上传</el-button>
+        </el-upload>
+      </el-row>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">取消</el-button>
+      <el-button v-if="!display" type="primary" @click="dataFormSubmit()">确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  // import { getcoCode, getReviewType, getreDetail } from '@/api/cus'
+  export default {
+    name: 'notice-add-or-update',
+    data () {
+      return {
+        visible: false,
+        dictType: 'material_type',
+        options: [],
+        options1: [],
+        dataList: [],
+        fileList: [],
+        id: 0,
+        dataForm: {
+          coCode: '',
+          name: '',
+          cellName: '',
+          reType: '',
+          notes: '',
+          attachList: []
+        },
+        dataRule: {
+          coCode: [{ required: true, message: '沟通编码不能为空', trigger: 'change' }],
+          reType: [{ required: true, message: '评审类别不能为空', trigger: 'change' }],
+          name: [{ required: true, message: '客户名称不能为空', trigger: 'blur' }],
+          cellName: [{ required: true, message: '联系人不能为空', trigger: 'blur' }]
+        },
+        display: false
+      }
+    },
+    watch: {
+      'dataForm.coCode' (value) {
+        this.options1.forEach(v => {
+          if (v.customerId === value) {
+            this.dataForm.name = v.customerName
+            this.dataForm.cellName = v.contact
+          }
+        })
+      }
+    },
+    methods: {
+      async init (id, disabled) {
+        this.visible = true
+        this.id = id || 0
+      },
+      submitUpload () {
+        this.$refs.upload.submit()
+      },
+      handleRemove (file, fileList) {
+        console.log(file, fileList)
+      },
+      handlePreview (file) {
+        console.log(file)
+      },
+      // 表单提交
+      dataFormSubmit () {
+        this.$refs['dataForm'].validate((valid) => {
+          if (valid) {
+            this.$http({
+              url: this.$http.adornUrl(`/biz-service/flow/cusContractReview/submit`),
+              method: 'post',
+              data: this.$http.adornData(this.dataForm)
+            }).then(({data}) => {
+              if (data && data.code === '200') {
+                this.$message({
+                  message: '操作成功',
+                  type: 'success',
+                  duration: 1500,
+                  onClose: () => {
+                    this.visible = false
+                    this.$emit('refreshDataList')
+                  }
+                })
+              } else {
+                this.$message.error(data.msg)
+              }
+            })
+          }
+        })
+      },
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      }
+    }
+  }
+</script>
+
+<style scoped>
+.my-line{
+  border-bottom: 1px solid #c0c4cc;
+  margin-bottom: 10px;
+}
+.title{
+  padding: 10px 0 ;
+}
+</style>

+ 217 - 0
src/views/modules/msg-center/announcement.vue

@@ -0,0 +1,217 @@
+<!-- 订单 -->
+<template>
+  <div class="order">
+    <el-form :inline="true" :model="dataForm" @keyup.enter.native="queryData()">
+      <el-form-item label="标题">
+        <el-input v-model="dataForm.title" clearable/>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="queryData()">查询</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table
+      :data="dataList"
+      border
+      v-loading="dataListLoading"
+      @selection-change="selectionChangeHandle"
+      style="width: 100%;">
+      <el-table-column
+        label="序号"
+        type="index"
+        width="50"
+        align="center">
+      </el-table-column>
+      <el-table-column
+        prop="title"
+        header-align="center"
+        align="center"
+        min-width="180"
+        label="公告主题名称">
+      </el-table-column>
+      <el-table-column
+        prop="level"
+        header-align="center"
+        align="center"
+        min-width="120"
+        label="级别">
+      </el-table-column>
+      <el-table-column
+        prop="content"
+        header-align="center"
+        align="center"
+        min-width="200"
+        label="公告内容">
+      </el-table-column>
+      <el-table-column
+        prop="attachList"
+        header-align="center"
+        align="center"
+        min-width="120"
+        label="附件">
+      </el-table-column>
+      <el-table-column
+        prop="isRead"
+        header-align="center"
+        align="center"
+        label="是否已读">
+      </el-table-column>
+      <el-table-column
+        prop="publisherName"
+        header-align="center"
+        align="center"
+        label="发布人">
+      </el-table-column>
+      <el-table-column
+        prop="publishTime"
+        header-align="center"
+        align="center"
+        label="发布时间">
+      </el-table-column>
+      <el-table-column
+        prop="notes"
+        header-align="center"
+        align="center"
+        label="备注">
+      </el-table-column>
+      <el-table-column
+        fixed="right"
+        header-align="center"
+        align="center"
+        width="150"
+        label="操作">
+        <template slot-scope="scope">
+          <el-button type="text" size="small" @click="addOrUpdateHandle(scope.row.orderId,false)">查看</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="sizeChangeHandle"
+      @current-change="currentChangeHandle"
+      :current-page="pageIndex"
+      :page-sizes="[10, 20, 50, 100]"
+      :page-size="pageSize"
+      :total="totalPage"
+      layout="total, sizes, prev, pager, next, jumper">
+    </el-pagination>
+    <!-- 弹窗,详情 -->
+    <detail v-if="addOrUpdateVisible" ref="addOrUpdate"></detail>
+  </div>
+</template>
+
+<script>
+  import Detail from './announcement-detail'
+  import { getAnnouncementList } from '@/api/msg'
+  import { getCusList } from '@/api/cus'
+  export default {
+    name: 'order',
+    components: {
+      Detail
+    },
+    created () {
+      this.queryData()
+    },
+    data () {
+      return {
+        addOrUpdateVisible: false,
+        dataForm: {},
+        dataList: [],
+        pageIndex: 1,
+        pageSize: 10,
+        totalPage: 0,
+        dataListLoading: false,
+        dataListSelections: [],
+        optionsState: [
+          {
+            code: null, value: '全部'
+          },
+          {
+            code: '0', value: '待提交'
+          },
+          {
+            code: '1', value: '待审批'
+          },
+          {
+            code: '2', value: '审批中'
+          },
+          {
+            code: '3', value: '审批完成'
+          },
+          {
+            code: '4', value: '审批不通过'
+          }
+        ],
+        optionsCustomer: []
+      }
+    },
+    methods: {
+      // 查询
+      queryData () {
+        this.pageIndex = 1
+        this.getAnnouncementList()
+      },
+      // 获取数据列表
+      getAnnouncementList () {
+        this.dataListLoading = true
+        let params = {
+          'current': this.pageIndex,
+          'size': this.pageSize,
+          'createTime': this.dataForm.createTime ? this.dataForm.createTime : null,
+          'state': this.dataForm.state ? this.dataForm.state : null
+        }
+        getAnnouncementList(params).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataList = data.data.records
+            this.totalPage = Number(data.data.total)
+          } else {
+            this.dataList = []
+            this.totalPage = 0
+          }
+          this.dataListLoading = false
+        })
+      },
+      // 每页数
+      sizeChangeHandle (val) {
+        this.pageSize = val
+        this.pageIndex = 1
+        this.getAnnouncementList()
+      },
+      // 当前页
+      currentChangeHandle (val) {
+        this.pageIndex = val
+        this.getAnnouncementList()
+      },
+      // 多选
+      selectionChangeHandle (val) {
+        this.dataListSelections = val
+      },
+      // 远程方法:获取客户列表
+      async remoteCustomer (query) {
+        if (!query) {
+          query = ''
+        }
+        await getCusList({'customerName': query}).then(({data}) => {
+          if (data && data.code === '200') {
+            this.optionsCustomer = []
+            data.data.records.forEach((item) => {
+              this.optionsCustomer.push({
+                code: item.customerId,
+                value: item.customerName
+              })
+            })
+          }
+        })
+      },
+      // 新增 / 修改
+      addOrUpdateHandle (id, disable) {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOrUpdate.init(id, disable)
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 233 - 0
src/views/modules/msg-center/approve.vue

@@ -0,0 +1,233 @@
+<!-- 订单 -->
+<template>
+  <div class="order">
+    <el-form :inline="true" :model="dataForm" @keyup.enter.native="queryData()">
+      <el-form-item label="状态">
+        <el-select
+          v-model="dataForm.state"
+          placeholder="请选择">
+         <el-option
+           v-for="item in optionsState"
+           :key="item.code"
+           :label="item.value"
+           :value="item.code">
+         </el-option>
+       </el-select>
+      </el-form-item>
+      <el-form-item label="申请日期">
+        <el-date-picker
+          v-model="dataForm.createTime"
+          value-format="yyyy-MM-dd"
+          type="date">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button @click="queryData()">查询</el-button>
+      </el-form-item>
+    </el-form>
+    <el-table
+      :data="dataList"
+      border
+      v-loading="dataListLoading"
+      @selection-change="selectionChangeHandle"
+      style="width: 100%;">
+      <el-table-column
+        label="序号"
+        type="index"
+        width="50"
+        align="center">
+      </el-table-column>
+      <el-table-column
+        prop="businessType"
+        header-align="center"
+        align="center"
+        min-width="180"
+        label="流程类别">
+      </el-table-column>
+      <el-table-column
+        prop="createTime"
+        header-align="center"
+        align="center"
+        min-width="180"
+        :show-overflow-tooltip="true"
+        label="申请时间">
+      </el-table-column>
+      <el-table-column
+        prop="updateTime"
+        header-align="center"
+        align="center"
+        min-width="120"
+        label="更新时间">
+      </el-table-column>
+      <el-table-column
+        prop="state"
+        header-align="center"
+        align="center"
+        min-width="100"
+        label="状态">
+        <template slot-scope="scope">
+          <span>{{ optionsState[Number(scope.row.state) + 1].value  }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="creatorName"
+        header-align="center"
+        align="center"
+        min-width="120"
+        label="申请人">
+      </el-table-column>
+      <el-table-column
+        prop="orgName"
+        header-align="center"
+        align="center"
+        label="申请部门">
+      </el-table-column>
+      <el-table-column
+        prop="completeDate"
+        header-align="center"
+        align="center"
+        min-width="150"
+        label="处理意见">
+      </el-table-column>
+      <el-table-column
+        header-align="center"
+        align="center"
+        width="80"
+        label="操作">
+        <template slot-scope="scope">
+          <el-button v-if="Number(scope.row.state) + 1 != 1" type="text" size="small" @click="addOrUpdateHandle(scope.row.orderId)">处理</el-button>
+          <el-button v-if="Number(scope.row.state) + 1 == 1" type="text" size="small" @click="addOrUpdateHandle(scope.row.businessId)">查看</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      @size-change="sizeChangeHandle"
+      @current-change="currentChangeHandle"
+      :current-page="pageIndex"
+      :page-sizes="[10, 20, 50, 100]"
+      :page-size="pageSize"
+      :total="totalPage"
+      layout="total, sizes, prev, pager, next, jumper">
+    </el-pagination>
+    <!-- 弹窗, 新增 / 修改 -->
+    <look-approve v-if="addOrUpdateVisible" ref="addOrUpdate" ></look-approve>
+  </div>
+</template>
+
+<script>
+  import LookApprove from './look-approve'
+  import { getApprovalList } from '@/api/msg'
+  import { getCusList } from '@/api/cus'
+  export default {
+    name: 'order',
+    components: {
+      LookApprove
+    },
+    created () {
+      this.queryData()
+    },
+    data () {
+      return {
+        addOrUpdateVisible: false,
+        dataForm: {},
+        dataList: [],
+        pageIndex: 1,
+        pageSize: 10,
+        totalPage: 0,
+        dataListLoading: false,
+        dataListSelections: [],
+        optionsState: [
+          {
+            code: null, value: '全部'
+          },
+          {
+            code: '0', value: '待提交'
+          },
+          {
+            code: '1', value: '待审批'
+          },
+          {
+            code: '2', value: '审批中'
+          },
+          {
+            code: '3', value: '审批完成'
+          },
+          {
+            code: '4', value: '审批不通过'
+          }
+        ],
+        optionsCustomer: []
+      }
+    },
+    methods: {
+      // 查询
+      queryData () {
+        this.pageIndex = 1
+        this.getApprovalList()
+      },
+      // 获取数据列表
+      getApprovalList () {
+        this.dataListLoading = true
+        let params = {
+          'current': this.pageIndex,
+          'size': this.pageSize,
+          'createTime': this.dataForm.createTime ? this.dataForm.createTime : null,
+          'state': this.dataForm.state ? this.dataForm.state : null
+        }
+        getApprovalList(params).then(({data}) => {
+          if (data && data.code === '200') {
+            this.dataList = data.data.records
+            this.totalPage = Number(data.data.total)
+          } else {
+            this.dataList = []
+            this.totalPage = 0
+          }
+          this.dataListLoading = false
+        })
+      },
+      // 每页数
+      sizeChangeHandle (val) {
+        this.pageSize = val
+        this.pageIndex = 1
+        this.getApprovalList()
+      },
+      // 当前页
+      currentChangeHandle (val) {
+        this.pageIndex = val
+        this.getApprovalList()
+      },
+      // 多选
+      selectionChangeHandle (val) {
+        this.dataListSelections = val
+      },
+      // 远程方法:获取客户列表
+      async remoteCustomer (query) {
+        if (!query) {
+          query = ''
+        }
+        await getCusList({'customerName': query}).then(({data}) => {
+          if (data && data.code === '200') {
+            this.optionsCustomer = []
+            data.data.records.forEach((item) => {
+              this.optionsCustomer.push({
+                code: item.customerId,
+                value: item.customerName
+              })
+            })
+          }
+        })
+      },
+      // 新增 / 修改
+      addOrUpdateHandle (id) {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOrUpdate.init(id)
+        })
+      }
+    }
+  }
+</script>
+
+<style scoped>
+
+</style>

+ 86 - 0
src/views/modules/msg-center/look-approve.vue

@@ -0,0 +1,86 @@
+<template>
+  <el-dialog
+    title="查看"
+    width="60%"
+    :close-on-click-modal="false"
+    :visible.sync="visible">
+    <el-row class="my-row">
+      <el-col :span="24">
+        <div style="height: 300px;">
+          <el-steps direction="vertical" :active="1">
+            <el-step title="步骤 1"></el-step>
+            <el-step title="步骤 2"></el-step>
+            <el-step title="步骤 3" description="这是一段很长很长很长的描述性文字"></el-step>
+          </el-steps>
+        </div>
+      </el-col>
+    </el-row>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="visible = false">返回</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+  import { getApprovalInfo } from '@/api/msg'
+  export default {
+    name: 'notice-add-or-update',
+    data () {
+      return {
+        visible: false,
+        dictType: 'material_type',
+        options: [],
+        options1: [],
+        dataList: [],
+        fileList: [],
+        id: 0,
+        dataForm: {
+          coCode: '',
+          name: '',
+          cellName: '',
+          reType: '',
+          notes: '',
+          attachList: []
+        },
+        display: false
+      }
+    },
+    methods: {
+      async init (id) {
+        this.visible = true
+        this.id = id || 0
+        this.getApprovalInfo()
+      },
+      getApprovalInfo () {
+        getApprovalInfo(this.id).then(data => {
+          if (data && data.code === '200') {
+            this.options = data.data
+          }
+        })
+      },
+      submitUpload () {
+        this.$refs.upload.submit()
+      },
+      handleRemove (file, fileList) {
+        console.log(file, fileList)
+      },
+      handlePreview (file) {
+        console.log(file)
+      },
+      // 表单提
+      validateField (type) {
+        this.$refs.dataForm.validateField(type)
+      }
+    }
+  }
+</script>
+
+<style scoped>
+.my-line{
+  border-bottom: 1px solid #c0c4cc;
+  margin-bottom: 10px;
+}
+.title{
+  padding: 10px 0 ;
+}
+</style>

Някои файлове не бяха показани, защото твърде много файлове са промени