Pārlūkot izejas kodu

git屏蔽dist变化监听

tengmingxue 3 gadi atpakaļ
vecāks
revīzija
ef4f080309

+ 1 - 0
.gitignore

@@ -1 +1,2 @@
 node_modules
+dist

+ 5 - 1
src/router/_import.js

@@ -242,7 +242,11 @@ const map = {
   costCalculate: () => import('@/views/zhpt/waterProductionCost/monthlyTimelyBudget/costCalculate/widget'), // 成本核算
 
   //供水优化调度系统
-  proRegister: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),
+  proRegister: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),  //工程受理
+  projSurvey: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),  //工程查勘
+  projContractRegister: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),  //合同登记
+  projContractExamine: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),  //合同审批
+  projFinanceCharge: () => import('@/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index'),  //财务收费
 
   // 在线水力模型
   forecast: () => import('@/views/currentSystem/onlineHydrualicsModel'),	// 在线预测

+ 498 - 4
src/views/currentSystem/optimizeDispatch/projectAcceptance/projectRegister/index.vue

@@ -1,16 +1,510 @@
 <template>
-  <!-- 工程登记 -->
-  <div>
-    工程登记
+  <!-- 录音质检 -->
+  <div class="app-container">
+    <div>
+      <el-row :gutter="20" type="flex">
+        <el-col :span="3">
+          <div class="demo-input-suffix">
+            <el-row type="flex">
+              <el-col>
+                <el-select v-model="pagination.empcode" placeholder="请选择坐席人员" size="mini" clearable @clear="searchBtn">
+                  <el-option
+                    v-for="item in zxrys"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+        <el-col :span="3">
+          <div class="demo-input-suffix">
+            <el-row type="flex" justify="end">
+              <el-col>
+                <el-select v-model="pagination.callType" placeholder="请选择呼叫类型" size="mini" clearable @clear="searchBtn">
+                  <el-option
+                    v-for="item in hjlxs"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.value"
+                  />
+                </el-select>
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+        <el-col :span="6">
+          <div class="demo-input-suffix">
+            <el-row type="flex" justify="end">
+              <el-col class="datebox">
+                <!-- <el-date-picker
+                  v-model="timer"
+                  size="small"
+                  style="width:100%"
+                  type="daterange"
+                  placeholder="请选择时间"
+                  range-separator="至"
+                  start-placeholder="开始日期"
+                  end-placeholder="结束日期"
+                  value-format="yyyy-MM-dd"
+                /> -->
+                <el-date-picker
+                  v-model="value1"
+                  size="mini"
+                  clearable
+                  type="date"
+                  placeholder="开始日期"
+                  style="width: 100%"
+                  value-format="yyyy-MM-dd"
+                />
+                &nbsp;至&nbsp;
+                <el-date-picker
+                  v-model="value2"
+                  size="mini"
+                  clearable
+                  type="date"
+                  placeholder="结束日期"
+                  style="width: 100%"
+                  value-format="yyyy-MM-dd"
+                />
+              </el-col>
+            </el-row>
+          </div>
+        </el-col>
+        <el-col :span="3" style="margin-left:15px">
+          <el-button type="primary" size="mini" @click="searchBtn">查 询</el-button>
+        </el-col>
+        <el-col :span="11">
+          <el-row type="flex" justify="end">
+            <el-button :disabled="disabledBtn" type="primary" size="mini" @click="score(multipleSelection[0])">录音评分</el-button>
+            <el-button :disabled="disabledBtn" type="primary" size="mini" @click="dowloadscore(multipleSelection[0])">下载录音</el-button>
+          </el-row>
+        </el-col>
+      </el-row>
+    </div>
+    <div style="margin-top:20px">
+      <!-- <el-button type="primary" size="small" @click="score()">录音评分</el-button>
+      <el-button type="primary" size="small">下载录音</el-button> -->
+      <!-- <el-rate v-model="lupf" show-score show-text text-color="#ff9900" /> -->
+      <div class="table_width">
+        <table-item
+          :table-data="list"
+          :column="column"
+          :pagination="true"
+          :tableheight="tableheight"
+          :border="true"
+          :pagesize="pagination.size"
+          :currentpage="pagination.current"
+          :total="total"
+          :multiple="true"
+          :fixed="false"
+          :isdelete="true"
+          @handleCurrentChange="handleCurrentChange"
+          @handleSizeChange="handleSizeChange"
+          @handleSelectionChange="handleSelectionChange"
+        />
+      </div>
+    </div>
+    <el-dialog
+      title="录音评分"
+      :visible.sync="dialogVisible"
+      width="700px"
+      :before-close="handleClose"
+      :close-on-click-modal="false"
+    >
+      <!-- <iframe :src="http://192.168.2.242:8080/public/getPlayRecord.html?connectionid=202107061017321051002&type=0" frameborder="0" style="height:200px;width:100%" /> -->
+      <audio ref="audio" autoplay="autoplay" controls style="width:95%;margin-left:5%" :src="'http://192.168.100.204:8080/calllist/'+LYurl">
+        您的浏览器不支持 audio 。
+      </audio>
+      <el-form ref="ruleForm" :model="ruleForm" label-width="100px" size="mini" class="demo-ruleForm">
+        <h3>录音评分:</h3>
+        <el-row type="flex" justify="center">
+          <el-col :span="8">
+            <el-form-item :label="'服务真诚('+MBlist.fwzc+')'" prop="fwzc">
+              <el-input v-model="ruleForm.fwzc" type="number" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'耐心服务('+MBlist.zzkg+')'" prop="zzkg">
+              <el-input v-model="ruleForm.zzkg" type="number" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'服务用语('+MBlist.fwyy+')'" prop="fwyy">
+              <el-input v-model="ruleForm.fwyy" type="number" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row type="flex" justify="center">
+          <el-col :span="8">
+            <el-form-item :label="'服务语调('+MBlist.yyyd+')'" prop="yyyd">
+              <el-input v-model="ruleForm.yyyd" type="number" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="8">
+            <el-form-item :label="'解答完整('+MBlist.jdwz+')'" prop="jdwz">
+              <el-input v-model="ruleForm.jdwz" type="number" :max="10" :main="0" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'解答准确('+MBlist.jdzq+')'" prop="jdzq">
+              <el-input v-model="ruleForm.jdzq" type="number" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row type="flex" justify="center">
+          <el-col :span="8">
+            <el-form-item :label="'倾听理解('+MBlist.qtlj+')'" prop="qtlj">
+              <el-input v-model="ruleForm.qtlj" type="number" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'信息收集('+MBlist.xxsj+')'" prop="xxsj">
+              <el-input v-model="ruleForm.xxsj" type="number" />
+            </el-form-item>
+          </el-col>
+
+          <el-col :span="8">
+            <el-form-item :label="'信息确认('+MBlist.xxqr+')'" prop="xxqr">
+              <el-input v-model="ruleForm.xxqr" type="number" :max="10" :main="0" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row type="flex" justify="center">
+          <el-col :span="8">
+            <el-form-item :label="'对话技巧('+MBlist.dhjq+')'" prop="dhjq">
+              <el-input v-model="ruleForm.dhjq" type="number" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'资料查询('+MBlist.zlk+')'" prop="zlk">
+              <el-input v-model="ruleForm.zlk" type="number" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item :label="'流程规范('+MBlist.lcgf+')'" prop="lcgf">
+              <el-input v-model="ruleForm.lcgf" type="number" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row type="flex" justify="center">
+          <el-col :span="8">
+            <el-form-item label="是否合格" prop="isreslut">
+              <el-select
+                v-model="ruleForm.isreslut"
+                size="mini"
+                placeholder="请选择"
+              >
+                <el-option v-for="item in reslutList" :key="item.id" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="16">
+            <el-form-item label="评分描述">
+              <el-input v-model="ruleForm.pfMs" type="textarea" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="ClickhandleClose">取 消</el-button>
+        <el-button type="primary" @click="scoreSubmit">确 定</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 
 <script>
+import TableItem from '@/components/Table'
+import { getLYMail, getGrade, postrecord, getlisten } from '@/api/hotline'
+import { client, parseTime } from '@/utils/index'
+// import axios from 'axios'
 export default {
+  name: 'CallLog',
+  components: { TableItem },
+  data() {
+    const end = new Date()
+    const start = new Date()
+    start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
+    return {
+      value1: parseTime(start, '{y}-{m}-{d}'),
+      value2: parseTime(end, '{y}-{m}-{d}'),
+      getLYMail: getLYMail,
+      colors: ['#99A9BF', '#F7BA2A', '#FF9900'], // 等同于 { 2: '#99A9BF', 4: { value: '#F7BA2A', excluded: true }, 5: '#FF9900' }
+      rate: 0,
+      dialogVisible: false,
+      pagination: { current: 1, size: 20, empcode: '', callType: '', startTime: '', endTime: '' },
+      total: 0,
+      disabledBtn: true,
+      getGrade: getGrade,
+      postrecord: postrecord,
+      getlisten: getlisten,
+      LYurl: '',
+      lupf: '',
+      zxry: '',
+      MBlist: {},
+      ruleForm: {
 
+      },
+      reslutList: [
+        {
+          id: 0,
+          label: '不合格',
+          value: 0
+        }, {
+          id: 1,
+          label: '合格',
+          value: 1
+        }
+      ],
+      zxrys: [
+        {
+          value: '1001',
+          label: '1001'
+        },
+        {
+          value: '1002',
+          label: '1002'
+        },
+        {
+          value: '1003',
+          label: '1003'
+        },
+        {
+          value: '1004',
+          label: '1004'
+        },
+        {
+          value: '1005',
+          label: '1005'
+        }
+      ],
+      hjlx: '',
+      timer: [],
+      ZCdata: {},
+      hjlxs: [
+        {
+          value: '1',
+          label: '呼入'
+        },
+        {
+          value: '2',
+          label: '呼出'
+        },
+        {
+          value: '3',
+          label: '内部呼叫'
+        }
+      ],
+      num: 1,
+      multipleSelection: [],
+      column: [
+        {
+          label: '工号',
+          prop: 'empcode'
+        },
+        {
+          label: '名称',
+          prop: 'empName'
+        },
+        {
+          label: '呼叫类型',
+          prop: 'callTypeName'
+        },
+        {
+          label: '客户号码',
+          prop: 'telephone'
+        },
+        {
+          label: '系统号码',
+          prop: 'sysphone'
+        },
+        {
+          label: '呼叫时间',
+          prop: 'callTime'
+        },
+        {
+          label: '接通时间',
+          prop: 'connectTime'
+        },
+        {
+          label: '挂机时间',
+          prop: 'hangupTime'
+        }
+      ],
+      list: [
+      ] }
+  },
+  computed: {
+    tableheight() {
+      return client().height - 230
+    }
+  },
+  watch: {
+    multipleSelection() {
+      this.disabledBtn = this.multipleSelection.length !== 1
+    }
+  },
+  created() {
+    this.searchBtn()
+    this.getMB()
+  },
+  methods: {
+    handleClose(done) {
+      this.$refs.audio.pause()
+      done()
+    },
+    ClickhandleClose() {
+      this.$refs.audio.pause()
+      this.dialogVisible = false
+    },
+    searchBtn() {
+      if (this.value1 !== null) {
+        if (this.value1 && this.value2) {
+          this.pagination.startTime = this.value1 + ' 00:00:00'
+          this.pagination.endTime = this.value2 + ' 23:59:59'
+        } else {
+          this.pagination.startTime = ''
+          this.pagination.endTime = ''
+        }
+      } else {
+        this.pagination.startTime = ''
+        this.pagination.endTime = ''
+      }
+      this.pagination.current = 1
+      this.getMail()
+    },
+    async getMail() {
+      try {
+        const tableData = await this.getLYMail(this.pagination)
+        console.log(this.list)
+        this.list = tableData.result.records
+        this.total = tableData.result.total
+      } catch (err) {
+        console.log(err)
+      }
+    },
+    async getMB() {
+      try {
+        const Data = await this.getGrade()
+        this.MBlist = Data.result
+        console.log(Data)
+      } catch (err) {
+        console.log(err)
+      }
+    },
+    async postRecord(data) {
+      try {
+        const Data = await this.postrecord(data)
+        console.log(Data)
+        this.dialogVisible = false
+        this.getMail()
+      } catch (err) {
+        console.log(err)
+      }
+    },
+    // 选择
+    handleSelectionChange(value) {
+      this.multipleSelection = value
+      // console.log('1111', value)
+    },
+    // 每页多少条
+    handleSizeChange(pagesize) {
+      this.pagination.size = pagesize
+      this.getMail()
+    },
+    // 获取当前页
+    handleCurrentChange(currentPage) {
+      this.pagination.current = currentPage
+      this.getMail()
+    },
+    scoreSubmit() {
+      console.log(this.ruleForm)
+      let isnull = false
+      for (const i in this.ruleForm) {
+        console.log(this.ruleForm[i])
+        if (this.ruleForm[i] === '') {
+          isnull = true
+        }
+      }
+      if (isnull) {
+        this.$message.error('请填写全部评分')
+      } else {
+        let suer = true
+        for (const i in this.ruleForm) {
+          if (this.ruleForm[i] > this.MBlist[i]) {
+            suer = false
+          }
+        }
+        if (suer) {
+        // return
+          this.ruleForm = { ...this.ruleForm, ...this.ZCdata }
+          this.ruleForm.pfZxry = this.ZCdata.empcode
+          this.ruleForm.pfType = 2
+          this.ruleForm.pfLyid = this.ZCdata.connectionid
+          this.ruleForm.pfFz = Number(this.ruleForm.fwzc) + Number(this.ruleForm.zzkg) + Number(this.ruleForm.fwyy) + Number(this.ruleForm.yyyd) + Number(this.ruleForm.jdwz) + Number(this.ruleForm.jdzq) + Number(this.ruleForm.qtlj) + Number(this.ruleForm.xxsj) + Number(this.ruleForm.xxqr) + Number(this.ruleForm.dhjq) + Number(this.ruleForm.zlk) + Number(this.ruleForm.lcgf)
+          console.log('this.ruleForm.pfFz', this.ruleForm.pfFz)
+          this.postRecord(this.ruleForm)
+        } else {
+          this.$message.error('评分超出设定最大值')
+        }
+      }
+    },
+    score(value) {
+      this.ruleForm = {
+        dhjq: 0,
+        fwyy: 0,
+        fwzc: 0,
+        jdwz: 0,
+        jdzq: 0,
+        lcgf: 0,
+        qtlj: 0,
+        xxqr: 0,
+        xxsj: 0,
+        zlk: 0,
+        yyyd: 0,
+        zzkg: 0
+      }
+      this.LYurl = value.recordFile
+      this.dialogVisible = true
+      if (this.$refs.audio) {
+        this.$refs.audio.load()
+        this.$refs.audio.play()
+      }
+      this.ZCdata = value
+      console.log(this.ZCdata)
+    },
+    dowloadscore(value) {
+      console.log(value)
+      if (Number(value.callResult) === 1 && value.recordFile) {
+        window.open('http://192.168.100.204:8080/public/downloadFile.html?type=0&connectionid=' + value.connectionid)
+      } else {
+        this.$message.error('录音文件下载失败')
+      }
+    }
+  }
 }
 </script>
 
 <style lang="scss" scoped>
-
+.app-container {
+  background: #fff;
+}
+.demo-input-suffix {
+  span {
+    line-height: 32px;
+    font-size: 14px;
+  }
+}
+.table_width {
+  margin-top: 20px;
+}    .datebox{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
 </style>