Commit b397a8de authored by wangwei's avatar wangwei

任务看板修改

parent 3a09985e
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=never><link rel=stylesheet href=https:////at.alicdn.com/t/font_746649_x1rivf5f5.css><link rel=stylesheet href=https://unpkg.com/element-ui@2.4.9/lib/theme-chalk/index.css><title>唱唱启蒙-后台</title></head><body><script src=https://unpkg.com/vue@2.5.17/dist/vue.js></script><script src=https://unpkg.com/vuex@3.0.1/dist/vuex.min.js></script><script src=https://unpkg.com/axios@0.18.0/dist/axios.min.js></script><script src=https://unpkg.com/element-ui@2.4.9/lib/index.js></script><div id=app></div><script type=text/javascript src=/static/js/manifest.a080cf3d13ab19069247.js></script><script type=text/javascript src=/static/js/vendor.19b07206259747695190.js></script><script type=text/javascript src=/static/js/app.72d338797308d851576a.js></script></body><script>let el = document.getElementsByTagName("script"); <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=never><link rel=stylesheet href=https:////at.alicdn.com/t/font_746649_x1rivf5f5.css><link rel=stylesheet href=https://unpkg.com/element-ui@2.4.9/lib/theme-chalk/index.css><title>唱唱启蒙-后台</title></head><body><script src=https://unpkg.com/vue@2.5.17/dist/vue.js></script><script src=https://unpkg.com/vuex@3.0.1/dist/vuex.min.js></script><script src=https://unpkg.com/axios@0.18.0/dist/axios.min.js></script><script src=https://unpkg.com/element-ui@2.4.9/lib/index.js></script><div id=app></div><script type=text/javascript src=/static/js/manifest.b9113cb5cf0e79fe4b58.js></script><script type=text/javascript src=/static/js/vendor.19b07206259747695190.js></script><script type=text/javascript src=/static/js/app.72d338797308d851576a.js></script></body><script>let el = document.getElementsByTagName("script");
el.onerror = function(a,b,c){ el.onerror = function(a,b,c){
console.log('error:',a,b,c); console.log('error:',a,b,c);
}; };
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
!function(e){var c=window.webpackJsonp;window.webpackJsonp=function(f,b,n){for(var r,t,o,i=0,u=[];i<f.length;i++)t=f[i],a[t]&&u.push(a[t][0]),a[t]=0;for(r in b)Object.prototype.hasOwnProperty.call(b,r)&&(e[r]=b[r]);for(c&&c(f,b,n);u.length;)u.shift()();if(n)for(i=0;i<n.length;i++)o=d(d.s=n[i]);return o};var f={},a={54:0};function d(c){if(f[c])return f[c].exports;var a=f[c]={i:c,l:!1,exports:{}};return e[c].call(a.exports,a,a.exports,d),a.l=!0,a.exports}d.e=function(e){var c=a[e];if(0===c)return new Promise(function(e){e()});if(c)return c[2];var f=new Promise(function(f,d){c=a[e]=[f,d]});c[2]=f;var b=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.async=!0,n.timeout=12e4,d.nc&&n.setAttribute("nonce",d.nc),n.src=d.p+"static/js/"+e+"."+{0:"c9296fa1c8d8a3c9f89e",1:"13ecc92254166c2b45a6",2:"f2a06db15d213b608870",3:"a50f4c409a3bcea91381",4:"25316e7d3f0819488250",5:"3f83b1af222f5a136eca",6:"31ca7d2bee965bead03f",7:"fc753f558b39e6fe49c9",8:"cd8c166d314d7d6181cd",9:"b1b1fde138d45bfc25d2",10:"3f2164813ca748580385",11:"74fffc59d2b8ab639671",12:"5faa8c6fe93dd8318f6c",13:"5f3e53db5146d925a973",14:"095625c5ff57d0774602",15:"dfb974c4f18e203f717d",16:"e0551b536bb51e474bc9",17:"1a566fff237fd73182c7",18:"e921a577887de038df89",19:"5f0e5a8b123730833389",20:"1523dee6e75b5eeaee70",21:"d14e131c4b4983543f0c",22:"eee5ae7b25c0c9ba76db",23:"7636b0f88d1c1e5dcfde",24:"1ab0904dacff98c8be22",25:"a895cfaaf3538fc9d453",26:"2dc6ee3466c889c57317",27:"c096be33c7355e51f462",28:"70b0b4cf287b5b056886",29:"64f3d097b888469617a6",30:"0320595f56926c7eb86d",31:"8f5bbc0412d546335db6",32:"bf6ecc8dc5ed1336b225",33:"3b0ffb1fae55c57ecd2a",34:"6ec9b3fbbe91ad8b68e5",35:"d8cbbb94eba78aae5204",36:"da81b57fd678c10e3c7e",37:"055874e8ba8f293f4d0c",38:"d73f1b27521fa4569eb8",39:"fb2822aa5110c15c3d31",40:"cb7e7f070738f432d0b5",41:"9b9dc4d455282a10fc45",42:"b44529aaa35c8b216c7e",43:"03627096aa6c9e8cbc7c",44:"7d222355fa25f3d50691",45:"f002ee4b50549513cd1e",46:"737cb2db82f1793a8f73",47:"55e9f020a22f300bbb70",48:"a7d5dd30041d9587e338",49:"5063a876a0e5fcfc2d58",50:"a97af822fd1c8ab3dc1c",51:"e069a842df53d1309e99"}[e]+".js";var r=setTimeout(t,12e4);function t(){n.onerror=n.onload=null,clearTimeout(r);var c=a[e];0!==c&&(c&&c[1](new Error("Loading chunk "+e+" failed.")),a[e]=void 0)}return n.onerror=n.onload=t,b.appendChild(n),f},d.m=e,d.c=f,d.d=function(e,c,f){d.o(e,c)||Object.defineProperty(e,c,{configurable:!1,enumerable:!0,get:f})},d.n=function(e){var c=e&&e.__esModule?function(){return e.default}:function(){return e};return d.d(c,"a",c),c},d.o=function(e,c){return Object.prototype.hasOwnProperty.call(e,c)},d.p="/",d.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
<!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=never><link rel=stylesheet href=https:////at.alicdn.com/t/font_746649_x1rivf5f5.css><link rel=stylesheet href=https://unpkg.com/element-ui@2.4.9/lib/theme-chalk/index.css><title>唱唱启蒙-后台</title><link href=/static/css/app.c090c34acd3cfe3e6437704a811fb21e.css rel=stylesheet></head><body><script src=https://unpkg.com/vue@2.5.17/dist/vue.js></script><script src=https://unpkg.com/vuex@3.0.1/dist/vuex.min.js></script><script src=https://unpkg.com/axios@0.18.0/dist/axios.min.js></script><script src=https://unpkg.com/element-ui@2.4.9/lib/index.js></script><div id=app></div><script type=text/javascript src=/static/js/manifest.7c3e9cbe7a7c837cdbb1.js></script><script type=text/javascript src=/static/js/vendor.dabb3afa5856b271bc7f.js></script><script type=text/javascript src=/static/js/app.b44a659fceb1c1bcc783.js></script></body><script>let el = document.getElementsByTagName("script"); <!DOCTYPE html><html><head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=referrer content=never><link rel=stylesheet href=https:////at.alicdn.com/t/font_746649_x1rivf5f5.css><link rel=stylesheet href=https://unpkg.com/element-ui@2.4.9/lib/theme-chalk/index.css><title>唱唱启蒙-后台</title><link href=/static/css/app.833106ec6ace57ceabe2cab0cd9ab467.css rel=stylesheet></head><body><script src=https://unpkg.com/vue@2.5.17/dist/vue.js></script><script src=https://unpkg.com/vuex@3.0.1/dist/vuex.min.js></script><script src=https://unpkg.com/axios@0.18.0/dist/axios.min.js></script><script src=https://unpkg.com/element-ui@2.4.9/lib/index.js></script><div id=app></div><script type=text/javascript src=/static/js/manifest.36e3bfda717b54ef2db9.js></script><script type=text/javascript src=/static/js/vendor.dabb3afa5856b271bc7f.js></script><script type=text/javascript src=/static/js/app.b44a659fceb1c1bcc783.js></script></body><script>let el = document.getElementsByTagName("script");
el.onerror = function(a,b,c){ el.onerror = function(a,b,c){
console.log('error:',a,b,c); console.log('error:',a,b,c);
}; };
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
!function(e){var f=window.webpackJsonp;window.webpackJsonp=function(c,n,r){for(var d,t,o,i=0,u=[];i<c.length;i++)t=c[i],a[t]&&u.push(a[t][0]),a[t]=0;for(d in n)Object.prototype.hasOwnProperty.call(n,d)&&(e[d]=n[d]);for(f&&f(c,n,r);u.length;)u.shift()();if(r)for(i=0;i<r.length;i++)o=b(b.s=r[i]);return o};var c={},a={54:0};function b(f){if(c[f])return c[f].exports;var a=c[f]={i:f,l:!1,exports:{}};return e[f].call(a.exports,a,a.exports,b),a.l=!0,a.exports}b.e=function(e){var f=a[e];if(0===f)return new Promise(function(e){e()});if(f)return f[2];var c=new Promise(function(c,b){f=a[e]=[c,b]});f[2]=c;var n=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.charset="utf-8",r.async=!0,r.timeout=12e4,b.nc&&r.setAttribute("nonce",b.nc),r.src=b.p+"static/js/"+e+"."+{0:"3c6a9466f6322812bb29",1:"70bc42dbc1ffaed57988",2:"8d64c4f32108e29e828a",3:"8581483796db28fb1e83",4:"f9b1c86fb172be37a9ec",5:"0770f442fbcafb9fbb6b",6:"72cc992f463f8d040b6b",7:"06e4c19733dffde6057a",8:"ed8ef396b51f943534c5",9:"95a10d5f8ad39ee47e8a",10:"901693097383eee4bb36",11:"f5785a1ae295125740f3",12:"8b62f9b9a60d674eac10",13:"19e3e554d1402ec008f9",14:"8c6f084e6255fbeded32",15:"7360d785ee332f5a4bb8",16:"377ce2b3eca0c3a88598",17:"ff8ef6eecfc24eaead59",18:"524fb6b2da79f077570f",19:"aaff5cb99e110a714ee1",20:"f45c5a602b2535d93d24",21:"3f9f11c97fb1e1427b87",22:"bb30e982e20decdf5597",23:"c594ea4a37322f8c7840",24:"ed17cab90908135eaffa",25:"fd6fb9d57686c26eb406",26:"ce23bfb9282a66c186c4",27:"bbf8405accf1afcd5be3",28:"c9bbffb9c2a6b58702da",29:"ac117b295bb4de6f3a14",30:"e9270346ac5a37b40765",31:"89ee2c867b096e88eecb",32:"18bd09ea1758c434e68b",33:"207f09ca5117a438027d",34:"3f43f058bf9441d0d79f",35:"37496d6823ff5bb7139f",36:"9da1921ac78c17085d92",37:"a9288b9ae1825f0a2aef",38:"b15e9a6506cc91cb36b7",39:"6dbe195c28187681cf8d",40:"0a7bd580c27c12e2babf",41:"43efb089718547897e5a",42:"f932e4cf13c0ebde02f0",43:"cb3aaae7ea0ea31fe041",44:"820b288e99876613dbbe",45:"093e400e86b53f46d09a",46:"d724b95e520c7e948730",47:"76f0d426db5ba9283455",48:"b163cd5e2750e3f00800",49:"fd79c4e277dbe5de3809",50:"1d6101cb1433a7f1e23a",51:"5bdb0d5bedd939cc3016"}[e]+".js";var d=setTimeout(t,12e4);function t(){r.onerror=r.onload=null,clearTimeout(d);var f=a[e];0!==f&&(f&&f[1](new Error("Loading chunk "+e+" failed.")),a[e]=void 0)}return r.onerror=r.onload=t,n.appendChild(r),c},b.m=e,b.c=c,b.d=function(e,f,c){b.o(e,f)||Object.defineProperty(e,f,{configurable:!1,enumerable:!0,get:c})},b.n=function(e){var f=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(f,"a",f),f},b.o=function(e,f){return Object.prototype.hasOwnProperty.call(e,f)},b.p="/",b.oe=function(e){throw console.error(e),e}}([]);
\ No newline at end of file
...@@ -215,9 +215,8 @@ ...@@ -215,9 +215,8 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-popover <el-popover
placement="top" placement="top"
width="400"> width="200">
<div style="text-align: center"> <div style="text-align: center">
<el-button type="primary" size="mini" plain @click="onGetUserDescList(scope.row)" >沟通情况</el-button>
<el-button type="primary" size="mini" plain @click="userLook(scope.row)">看课情况</el-button> <el-button type="primary" size="mini" plain @click="userLook(scope.row)">看课情况</el-button>
<el-button type="danger" size="mini" plain @click="onDel(scope.row)" v-if="$store.state.deletePermission && !$store.state.readonly">删除</el-button> <el-button type="danger" size="mini" plain @click="onDel(scope.row)" v-if="$store.state.deletePermission && !$store.state.readonly">删除</el-button>
</div> </div>
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
{{ row.desc }} {{ row.desc }}
</span> </span>
<span style='color:red' v-if="row.desc === '' && !typeFlag">今日未沟通</span> <span style='color:red' v-if="row.desc === '' && !typeFlag">今日未沟通</span>
<span style='color:red' v-if="row.desc === '' && typeFlag">暂未沟通</span>
</el-button> </el-button>
</div> </div>
<el-button size="mini" @click="editComment(row.id)"> <el-button size="mini" @click="editComment(row.id)">
......
...@@ -23,6 +23,14 @@ ...@@ -23,6 +23,14 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="任务日期">
<el-date-picker
v-model="searchFrom.task_date"
value-format="yyyy-MM-dd"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" plain @click="getUser">搜索</el-button> <el-button type="primary" plain @click="getUser">搜索</el-button>
</el-form-item> </el-form-item>
...@@ -61,7 +69,7 @@ ...@@ -61,7 +69,7 @@
<el-table-column <el-table-column
prop="name" prop="name"
label="添加好友"> label="添加好友">
<template slot-scope="scope"> <template slot-scope="scope">
成功率:<el-progress 成功率:<el-progress
style="display: inline-block;width: 120px" style="display: inline-block;width: 120px"
...@@ -103,7 +111,7 @@ ...@@ -103,7 +111,7 @@
</el-table-column> </el-table-column>
<el-table-column <el-table-column
prop="name" prop="name"
label="当期意向"> label="意向标记">
<template slot-scope="scope"> <template slot-scope="scope">
回复率:<el-progress 回复率:<el-progress
style="display: inline-block;width: 120px" style="display: inline-block;width: 120px"
...@@ -122,31 +130,9 @@ ...@@ -122,31 +130,9 @@
</el-progress> </el-progress>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
prop="name"
label="往期意向">
<template slot-scope="scope">
回复率:<el-progress
style="display: inline-block;width: 120px"
:text-inside="true"
:stroke-width="18"
:color="Number(scope.row.past_reply_rate)===100 ? '#67C23A' : '#f00'"
:percentage="Number(scope.row.past_reply_rate)?Number(scope.row.past_reply_rate) :0">
</el-progress>
<br>
处理率:<el-progress
style="display: inline-block;width: 120px"
:text-inside="true"
:stroke-width="18"
:color="Number(scope.row.past_exec_rate)===100 ? '#67C23A' : '#f00'"
:percentage="Number(scope.row.past_exec_rate)?Number(scope.row.past_exec_rate):0">
</el-progress>
</template>
</el-table-column>
<el-table-column <el-table-column
prop="intention_num" prop="intention_num"
label="当前意向用户数"> label="意向用户数">
</el-table-column> </el-table-column>
<el-table-column <el-table-column
width="280" width="280"
...@@ -184,11 +170,13 @@ ...@@ -184,11 +170,13 @@
export default { export default {
name: "index", name: "index",
data(){ data(){
let nowDate = this.formatTime(new Date());
return { return {
searchFrom:{ searchFrom:{
name:'', name:'',
alias:"", alias:"",
status:'0', status:'0',
task_date:nowDate,
squad:"1", squad:"1",
type:"", type:"",
}, },
...@@ -199,7 +187,7 @@ ...@@ -199,7 +187,7 @@
userList:[], userList:[],
total:0, total:0,
nowPage:1, nowPage:1,
limit: 10, limit: 20,
dialogObj:{ dialogObj:{
type:0, type:0,
show:false, show:false,
...@@ -234,9 +222,9 @@ ...@@ -234,9 +222,9 @@
} }
}, },
mounted(){ mounted(){
let data= localStorage.getItem("phoneNum") let data= localStorage.getItem("phoneNum");
if(data){ if(data){
data=JSON.parse(data) data=JSON.parse(data);
this.$router.push('/teacher/'+ data.id); this.$router.push('/teacher/'+ data.id);
}else{ }else{
this.getUser() this.getUser()
...@@ -244,9 +232,19 @@ ...@@ -244,9 +232,19 @@
}, },
methods:{ methods:{
onPageChange(val){ onPageChange(val){
this.nowPage = val this.nowPage = val;
this.getUser() this.getUser()
}, },
formatTime(date){
let year = date.getFullYear();
let Month = date.getMonth()+1;
if(Month < 10){
Month = `0${Month}`
}
let Day = date.getDate();
if(Day<10)Day = `0${Day}`;
return `${year}-${Month}-${Day}`;
},
onSizeChange(val){ onSizeChange(val){
this.limit = val this.limit = val
this.nowPage = 1; this.nowPage = 1;
...@@ -269,6 +267,9 @@ ...@@ -269,6 +267,9 @@
if (this.searchFrom.alias) { if (this.searchFrom.alias) {
json.alias = this.searchFrom.alias json.alias = this.searchFrom.alias
} }
if (this.searchFrom.task_date){
json.task_date = this.searchFrom.task_date
}
if (this.searchFrom.squad) { if (this.searchFrom.squad) {
json.squad = this.searchFrom.squad json.squad = this.searchFrom.squad
} }
......
<template> <template>
<div style="font-size: 14px"> <div style="font-size: 14px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="16"> <el-col :span="24">
<task1 :teacherId="id"></task1> <task1 :teacherId="id"></task1>
</el-col> </el-col>
<el-col :span="8">
<task2 :teacherId="id"></task2>
</el-col>
</el-row> </el-row>
<el-row :gutter="20" style="margin-top: 20px"> <el-row :gutter="20" style="margin-top: 20px">
<el-col :span="24"> <el-col :span="24">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>任务3:用户召回</span> <span>任务2:用户召回</span>
</div> </div>
<div v-if="!task3List || task3List.length < 1" style="color: #DDDDDD;text-align: center"> <div v-if="!task3List || task3List.length < 1" style="color: #DDDDDD;text-align: center">
——暂无数据—— ——暂无数据——
...@@ -98,7 +95,7 @@ ...@@ -98,7 +95,7 @@
<el-col :span="24"> <el-col :span="24">
<el-card> <el-card>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>任务4:意向用户标记</span> <span>任务3:意向用户标记</span>
</div> </div>
<div>本期意向用户:</div> <div>本期意向用户:</div>
<div v-if="!task3List || task3List.length < 1" style="color: #DDDDDD;text-align: center"> <div v-if="!task3List || task3List.length < 1" style="color: #DDDDDD;text-align: center">
...@@ -175,6 +172,11 @@ ...@@ -175,6 +172,11 @@
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20" style="margin-top: 20px">
<el-col :span="12">
<task2 :teacherId="id"></task2>
</el-col>
</el-row>
<el-dialog append-to-body :visible.sync="task3Detail.show" width="80%" :title="task3Detail.title" > <el-dialog append-to-body :visible.sync="task3Detail.show" width="80%" :title="task3Detail.title" >
<el-table <el-table
:data="task3Detail.list" :data="task3Detail.list"
...@@ -194,6 +196,16 @@ ...@@ -194,6 +196,16 @@
<teacher-desc :row="scope.row" :descType="2" @onSuccess="refDesc3"></teacher-desc> <teacher-desc :row="scope.row" :descType="2" @onSuccess="refDesc3"></teacher-desc>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
label="用户反馈">
<template slot-scope="scope">
<span v-if="scope.row.is_reply">
<span v-if="scope.row.reply_content">{{scope.row.reply_content}}</span>
<span v-if="!scope.row.reply_content || scope.row.reply_content === ''">无内容</span>
</span>
<span v-if="!scope.row.is_reply" style="color: red">尚未回复</span>
</template>
</el-table-column>
<el-table-column <el-table-column
label="进班时间" min-width="200" sortable prop="created_at" > label="进班时间" min-width="200" sortable prop="created_at" >
</el-table-column> </el-table-column>
...@@ -763,6 +775,7 @@ ...@@ -763,6 +775,7 @@
.task3-table{ .task3-table{
padding: 10px; padding: 10px;
overflow: auto; overflow: auto;
display: inline-block;
.table{ .table{
&:after{ &:after{
content:''; content:'';
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div> <div>
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>任务2:意向用户转化</span> <span>任务4:意向用户转化</span>
</div> </div>
<el-table border :data="task2List" align="center" :header-cell-style="{background:'#e4eff7'}"> <el-table border :data="task2List" align="center" :header-cell-style="{background:'#e4eff7'}">
<el-table-column prop="weight" label="意向等级" align="center"/> <el-table-column prop="weight" label="意向等级" align="center"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment