Commit 16ae4865 authored by wangwei's avatar wangwei

任务看板修改

parent c348f5a7
<!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.040d62fd2d6ee46fc3fd.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.6fef20210240fa49c4a8.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:"6572628c7f1e9a78b944",1:"13ecc92254166c2b45a6",2:"f2a06db15d213b608870",3:"f699bde9ea78c2369d7e",4:"25316e7d3f0819488250",5:"3f83b1af222f5a136eca",6:"95d7291c675382fe87c1",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.f478ccbc6da97c393a9830415569025f.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.299d9a3f9aa66dce5a52.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.8988da64525ee60d8743a717a57e8915.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.5c4691017c5eec02e0e1.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(a,n,r){for(var t,d,o,i=0,u=[];i<a.length;i++)d=a[i],c[d]&&u.push(c[d][0]),c[d]=0;for(t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t]);for(f&&f(a,n,r);u.length;)u.shift()();if(r)for(i=0;i<r.length;i++)o=b(b.s=r[i]);return o};var a={},c={54:0};function b(f){if(a[f])return a[f].exports;var c=a[f]={i:f,l:!1,exports:{}};return e[f].call(c.exports,c,c.exports,b),c.l=!0,c.exports}b.e=function(e){var f=c[e];if(0===f)return new Promise(function(e){e()});if(f)return f[2];var a=new Promise(function(a,b){f=c[e]=[a,b]});f[2]=a;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:"a08890f19f59a6a3f974",1:"70bc42dbc1ffaed57988",2:"8d64c4f32108e29e828a",3:"3568759f1bb116066146",4:"f9b1c86fb172be37a9ec",5:"0770f442fbcafb9fbb6b",6:"64c83c697625efbfcaf9",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 t=setTimeout(d,12e4);function d(){r.onerror=r.onload=null,clearTimeout(t);var f=c[e];0!==f&&(f&&f[1](new Error("Loading chunk "+e+" failed.")),c[e]=void 0)}return r.onerror=r.onload=d,n.appendChild(r),a},b.m=e,b.c=a,b.d=function(e,f,a){b.o(e,f)||Object.defineProperty(e,f,{configurable:!1,enumerable:!0,get:a})},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
...@@ -199,16 +199,7 @@ ...@@ -199,16 +199,7 @@
<el-table-column <el-table-column
label="意向等级" sortable min-width="95" prop="weight"> label="意向等级" sortable min-width="95" prop="weight">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.weight" size="mini" @change="changeWeight(scope.row)"> <user-weight :row="scope.row" @onSuccess="searchList"></user-weight>
<el-option label="0" :value="0">
</el-option>
<el-option label="1" :value="1">
</el-option>
<el-option label="2" :value="2">
</el-option>
<el-option label="3" :value="3">
</el-option>
</el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" fixed="right"> <el-table-column label="操作" fixed="right">
...@@ -446,6 +437,7 @@ ...@@ -446,6 +437,7 @@
import pageDesc from '../framework/page' import pageDesc from '../framework/page'
import {ISORNOT} from "../../util/wordbook"; import {ISORNOT} from "../../util/wordbook";
import teacherDesc from '../framework/teacherDesc' import teacherDesc from '../framework/teacherDesc'
import userWeight from '../framework/userWeight'
export default { export default {
name: "userList", name: "userList",
...@@ -551,6 +543,7 @@ ...@@ -551,6 +543,7 @@
page, page,
page2, page2,
teacherDesc, teacherDesc,
userWeight,
pageDesc pageDesc
}, },
filters:{ filters:{
......
<template>
<div>
<el-select v-model="weight" size="mini" @change="changeWeight(row)">
<el-option label="0" :value="0">
</el-option>
<el-option label="1" :value="1">
</el-option>
<el-option label="2" :value="2">
</el-option>
<el-option label="3" :value="3">
</el-option>
<el-option label="无法成为意向" :value="100">
</el-option>
</el-select>
</div>
</template>
<script>
import {editUserWeightApi} from "../../service/api";
export default {
name: "userWeight",
props:[
'row'
],
data(){
return {
weight:this.row.weight
}
},
methods:{
changeWeight(data){
this.$prompt('标记意向或非意向的原因', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
}).then(({ value }) => {
editUserWeightApi(data.id,this.weight,{desc:value}).then(()=>{
this.$message({
type:'success',
message:'数据更改成功'
});
this.$emit('onSuccess')
})
}).catch(() => {
this.weight = this.row.weight
})
},
},
watch:{
'row.weight'(value){
this.weight = value
}
}
}
</script>
<style scoped>
</style>
...@@ -114,12 +114,12 @@ ...@@ -114,12 +114,12 @@
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"
:text-inside="true" :text-inside="true"
:stroke-width="18" :stroke-width="18"
:color="Number(scope.row.over_reply_rate)===100 ? '#67C23A' : '#f00'" :color="Number(scope.row.over_intention_rate)===100 ? '#67C23A' : '#f00'"
:percentage="Number(scope.row.over_reply_rate)?Number(scope.row.over_reply_rate):0"> :percentage="Number(scope.row.over_intention_rate)?Number(scope.row.over_intention_rate):0">
</el-progress> </el-progress>
<br> <br>
处理率:<el-progress 处理率:<el-progress
......
This diff is collapsed.
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-card> </el-card>
<el-dialog append-to-body :visible.sync="task2Detail.show" <el-dialog append-to-body :visible.sync="task2Detail.show" :title="task2Detail.title" width="80%">
:title="task2Detail.title" width="80%">
<el-table <el-table
:data="task2Detail.list" :data="task2Detail.list"
size="mini" size="mini"
...@@ -25,6 +24,11 @@ ...@@ -25,6 +24,11 @@
<br> Tel:{{scope.row.mobile}} <br> Tel:{{scope.row.mobile}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="期数" align="center">
<template slot-scope="scope">
{{scope.row.periods_id}}{{scope.row.periods_title}}
</template>
</el-table-column>
<el-table-column <el-table-column
min-width="160" min-width="160"
label="沟通情况"> label="沟通情况">
...@@ -35,16 +39,20 @@ ...@@ -35,16 +39,20 @@
<el-table-column <el-table-column
label="意向等级" min-width="95" prop="weight"> label="意向等级" min-width="95" prop="weight">
<template slot-scope="scope"> <template slot-scope="scope">
<el-select v-model="scope.row.weight" size="mini" @change="changeWeight(scope.row)"> <user-weight :row="scope.row" @onSuccess="refDesc2"></user-weight>
<el-option label="0" :value="0"> </template>
</el-option> </el-table-column> <el-table-column
<el-option label="1" :value="1"> prop="last_watch_at"
</el-option> label="最后标注时间">
<el-option label="2" :value="2"> <template slot-scope="scope">
</el-option> {{scope.row.last_watch_at?scope.row.last_watch_at:'-'}}
<el-option label="3" :value="3"> </template>
</el-option> </el-table-column>
</el-select> <el-table-column
prop="last_weight_desc"
label="标注意向原因">
<template slot-scope="scope">
{{scope.row.last_weight_desc?scope.row.last_weight_desc:'-'}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="200px" fixed="right"> <el-table-column label="操作" width="200px" fixed="right">
...@@ -124,12 +132,13 @@ ...@@ -124,12 +132,13 @@
</template> </template>
<script> <script>
import {task2Api,getOverWatchListApi,editUserWeightApi,userLookApi} from "../../service/api"; import {task2Api,editUserWeightApi,userLookApi} from "../../service/api";
import teacherDesc from '../framework/teacherDesc' import teacherDesc from '../framework/teacherDesc'
import userWeight from '../framework/userWeight'
export default { export default {
name: "task2", name: "task2",
props:['teacherId'], props:['teacherId'],
components: {teacherDesc}, components: {teacherDesc,userWeight},
data(){ data(){
return { return {
task2List:[], task2List:[],
...@@ -203,21 +212,14 @@ ...@@ -203,21 +212,14 @@
this.task2Detail.type = 1; this.task2Detail.type = 1;
}, },
refDesc2(){ refDesc2(){
if(this.task2Detail.type === 1){ task2Api(this.teacherId).then(res=>{
task2Api(this.teacherId).then(res=>{ this.task2List = res;
this.task2List = res; res.forEach(i=>{
res.forEach(i=>{ if(i.weight === this.task2Detail.weight){
if(i.weight === this.task2Detail.weight){ this.task2Detail.list = i.detail
this.task2Detail.list = i.detail }
}
})
});
}else if(this.task2Detail.type === 2) {
getOverWatchListApi(this.task2Detail.periods_id,this.teacherId,{}).then(res=>{
this.task2Detail.loading = false;
this.task2Detail.list = res
}) })
} });
}, },
} }
} }
......
This diff is collapsed.
...@@ -877,8 +877,8 @@ export const editExchangeApi = function (id, json) { ...@@ -877,8 +877,8 @@ export const editExchangeApi = function (id, json) {
// 修改用户意向等级 // 修改用户意向等级
const editUserWeightUrl = `/api/admin/class/user/weight/`; const editUserWeightUrl = `/api/admin/class/user/weight/`;
export const editUserWeightApi = function (id, weight) { export const editUserWeightApi = function (id, weight,json) {
return Vue.prototype.$put(editUserWeightUrl + id + '/' + weight) return Vue.prototype.$put(editUserWeightUrl + id + '/' + weight,json)
}; };
// 修改用户看课权限 // 修改用户看课权限
......
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