master
lion 3 months ago
parent a59e4c8b87
commit 83549d5b5c

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@ -0,0 +1,3 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=/admin_test/favicon.ico><title>四世同堂业务管理系统</title><script>window._AMapSecurityConfig = {
securityJsCode: 'f8a702571a8addbf0054149057bc3d4b',
}</script><script src="https://webapi.amap.com/maps?v=1.4.4&key=a37c084cac0c3459b892276ec0a1c880&plugin=AMap.PlaceSearch,AMap.DistrictSearch,AMap.MarkerClusterer"></script><script src="https://webapi.amap.com/ui/1.0/main.js?v=1.0.11"></script><link href=/admin_test/static/css/app.50bc4353.css rel=preload as=style><link href=/admin_test/static/css/chunk-libs.e3e17436.css rel=preload as=style><link href=/admin_test/static/js/app.54b2ff6f.js rel=preload as=script><link href=/admin_test/static/js/chunk-elementUI.3ab53a91.js rel=preload as=script><link href=/admin_test/static/js/chunk-libs.e2ccf809.js rel=preload as=script><link href=/admin_test/static/css/chunk-libs.e3e17436.css rel=stylesheet><link href=/admin_test/static/css/app.50bc4353.css rel=stylesheet></head><body><noscript><strong>We're sorry but 四世同堂业务管理系统 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function t(t){for(var r,a,u=t[0],i=t[1],f=t[2],d=0,l=[];d<u.length;d++)a=u[d],Object.prototype.hasOwnProperty.call(c,a)&&c[a]&&l.push(c[a][0]),c[a]=0;for(r in i)Object.prototype.hasOwnProperty.call(i,r)&&(e[r]=i[r]);s&&s(t);while(l.length)l.shift()();return o.push.apply(o,f||[]),n()}function n(){for(var e,t=0;t<o.length;t++){for(var n=o[t],r=!0,a=1;a<n.length;a++){var u=n[a];0!==c[u]&&(r=!1)}r&&(o.splice(t--,1),e=i(i.s=n[0]))}return e}var r={},a={runtime:0},c={runtime:0},o=[];function u(e){return i.p+"static/js/"+({}[e]||e)+"."+{"chunk-1ecad7eb":"f4d0b1c8","chunk-1f880e69":"66e301f9","chunk-164cd81c":"2790515a","chunk-1daab73b":"d421efd6","chunk-9a3a6572":"9ee3bec2","chunk-637ee96e":"b82648a1","chunk-2d0ac22e":"deb40f46","chunk-681954a8":"2df626e1","chunk-f040f2a2":"5c78dc84"}[e]+".js"}function i(t){if(r[t])return r[t].exports;var n=r[t]={i:t,l:!1,exports:{}};return e[t].call(n.exports,n,n.exports,i),n.l=!0,n.exports}i.e=function(e){var t=[],n={"chunk-164cd81c":1,"chunk-9a3a6572":1,"chunk-637ee96e":1,"chunk-681954a8":1,"chunk-f040f2a2":1};a[e]?t.push(a[e]):0!==a[e]&&n[e]&&t.push(a[e]=new Promise((function(t,n){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-1ecad7eb":"31d6cfe0","chunk-1f880e69":"31d6cfe0","chunk-164cd81c":"9c2a0175","chunk-1daab73b":"31d6cfe0","chunk-9a3a6572":"f1707a89","chunk-637ee96e":"41017f87","chunk-2d0ac22e":"31d6cfe0","chunk-681954a8":"c2522fc6","chunk-f040f2a2":"14d3585d"}[e]+".css",c=i.p+r,o=document.getElementsByTagName("link"),u=0;u<o.length;u++){var f=o[u],d=f.getAttribute("data-href")||f.getAttribute("href");if("stylesheet"===f.rel&&(d===r||d===c))return t()}var l=document.getElementsByTagName("style");for(u=0;u<l.length;u++){f=l[u],d=f.getAttribute("data-href");if(d===r||d===c)return t()}var s=document.createElement("link");s.rel="stylesheet",s.type="text/css",s.onload=t,s.onerror=function(t){var r=t&&t.target&&t.target.src||c,o=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");o.code="CSS_CHUNK_LOAD_FAILED",o.request=r,delete a[e],s.parentNode.removeChild(s),n(o)},s.href=c;var h=document.getElementsByTagName("head")[0];h.appendChild(s)})).then((function(){a[e]=0})));var r=c[e];if(0!==r)if(r)t.push(r[2]);else{var o=new Promise((function(t,n){r=c[e]=[t,n]}));t.push(r[2]=o);var f,d=document.createElement("script");d.charset="utf-8",d.timeout=120,i.nc&&d.setAttribute("nonce",i.nc),d.src=u(e);var l=new Error;f=function(t){d.onerror=d.onload=null,clearTimeout(s);var n=c[e];if(0!==n){if(n){var r=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+r+": "+a+")",l.name="ChunkLoadError",l.type=r,l.request=a,n[1](l)}c[e]=void 0}};var s=setTimeout((function(){f({type:"timeout",target:d})}),12e4);d.onerror=d.onload=f,document.head.appendChild(d)}return Promise.all(t)},i.m=e,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)i.d(n,r,function(t){return e[t]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/admin_test/",i.oe=function(e){throw console.error(e),e};var f=window["webpackJsonp"]=window["webpackJsonp"]||[],d=f.push.bind(f);f.push=t,f=f.slice();for(var l=0;l<f.length;l++)t(f[l]);var s=d;n()})([]);</script><script src=/admin_test/static/js/chunk-elementUI.3ab53a91.js></script><script src=/admin_test/static/js/chunk-libs.e2ccf809.js></script><script src=/admin_test/static/js/app.54b2ff6f.js></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 542 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ac22e"],{"17f8":function(t,e,n){"use strict";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticStyle:{width:"100%",height:"100%"}},[n("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[n("router-view",{key:t.key})],1)],1)},a=[],i={data:function(){return{}},methods:{},computed:{key:function(){return this.$route.path}}},o=i,u=n("2877"),c=Object(u["a"])(o,r,a,!1,null,"991d7c9c",null);e["default"]=c.exports}}]);

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-681954a8"],{"1be5":function(e,t,o){},"28fd":function(e,t,o){"use strict";o("1be5")},"9ed6":function(e,t,o){"use strict";o.r(t);var s=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"login-container"},[o("vue-particles",{attrs:{color:"#ffffff",particleOpacity:.7,particlesNumber:80,shapeType:"circle",particleSize:4,linesColor:"#ffffff",linesWidth:1,lineLinked:!0,lineOpacity:.4,linesDistance:150,moveSpeed:3,hoverEffect:!0,hoverMode:"grab",clickEffect:!0,clickMode:"push"}}),o("el-form",{ref:"loginForm",staticClass:"login-form",attrs:{model:e.loginForm,rules:e.loginRules,"auto-complete":"on","label-position":"left"}},[o("div",{staticClass:"title-container"},[o("h3",{staticClass:"title"},[e._v("四世同堂业务管理系统")])]),o("el-form-item",{attrs:{prop:"username"}},[o("span",{staticClass:"svg-container"},[o("svg-icon",{attrs:{"icon-class":"user"}})],1),o("el-input",{ref:"username",attrs:{placeholder:"请输入登录名",name:"username",type:"text",tabindex:"1","auto-complete":"on"},model:{value:e.loginForm.username,callback:function(t){e.$set(e.loginForm,"username",t)},expression:"loginForm.username"}})],1),o("el-form-item",{attrs:{prop:"password"}},[o("span",{staticClass:"svg-container"},[o("svg-icon",{attrs:{"icon-class":"password"}})],1),o("el-input",{key:e.passwordType,ref:"password",attrs:{type:e.passwordType,placeholder:"请输入密码",name:"password",tabindex:"2","auto-complete":"on"},nativeOn:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleLogin(t)}},model:{value:e.loginForm.password,callback:function(t){e.$set(e.loginForm,"password",t)},expression:"loginForm.password"}}),o("span",{staticClass:"show-pwd",on:{click:e.showPwd}},[o("svg-icon",{attrs:{"icon-class":"password"===e.passwordType?"eye":"eye-open"}})],1)],1),o("el-button",{staticStyle:{width:"100%","margin-bottom":"30px"},attrs:{loading:e.loading,type:"primary"},nativeOn:{click:function(t){return t.preventDefault(),e.handleLogin(t)}}},[e._v("登录")])],1)],1)},n=[],r=o("61f7"),i=(o("4360"),{name:"Login",data:function(){var e=function(e,t,o){Object(r["b"])(t)?o():o(new Error("请正确输入登录名"))},t=function(e,t,o){t.length<6?o(new Error("密码输入错误")):o()};return{loginForm:{username:"",password:""},loginRules:{username:[{required:!0,trigger:"blur",validator:e}],password:[{required:!0,trigger:"blur",validator:t}]},loading:!1,passwordType:"password",redirect:void 0}},watch:{$route:{handler:function(e){this.redirect=e.query&&e.query.redirect},immediate:!0}},methods:{showPwd:function(){var e=this;"password"===this.passwordType?this.passwordType="":this.passwordType="password",this.$nextTick((function(){e.$refs.password.focus()}))},handleLogin:function(){var e=this;this.$refs.loginForm.validate((function(t){if(!t)return console.log("error submit!!"),!1;e.loading=!0,e.$store.dispatch("user/login",e.loginForm).then((function(){e.$store.dispatch("app/getVillageCodes"),e.$router.push({path:e.redirect||"/"}),e.loading=!1})).catch((function(){e.loading=!1}))}))}}}),a=i,l=(o("b7ce"),o("28fd"),o("2877")),c=Object(l["a"])(a,s,n,!1,null,"3fd4ab1a",null);t["default"]=c.exports},b7ce:function(e,t,o){"use strict";o("fff4")},fff4:function(e,t,o){e.exports={menuText:"#606266",menuActiveText:"#fff",subMenuActiveText:"#fff",menuBg:"#fff",menuHover:"#d96d68",menuActiveBg:"#b3241d",submenuActiveBg:"#b3241d",subMenuHover:"#d96d68",sideBarWidth:"210px",primaryColor:"#b3241d"}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-f040f2a2"],{"26fc":function(t,s,a){t.exports=a.p+"static/img/404_cloud.0f4bc32b.png"},"2b45":function(t,s,a){},"8cdb":function(t,s,a){"use strict";a.r(s);var i=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"wscn-http404-container"},[a("div",{staticClass:"wscn-http404"},[t._m(0),a("div",{staticClass:"bullshit"},[a("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),a("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),a("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("回到首页")])])])])},c=[function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",{staticClass:"pic-404"},[i("img",{staticClass:"pic-404__parent",attrs:{src:a("a36b"),alt:"404"}}),i("img",{staticClass:"pic-404__child left",attrs:{src:a("26fc"),alt:"404"}}),i("img",{staticClass:"pic-404__child mid",attrs:{src:a("26fc"),alt:"404"}}),i("img",{staticClass:"pic-404__child right",attrs:{src:a("26fc"),alt:"404"}})])}],e={name:"Page404",computed:{message:function(){return"The webmaster said that you can not enter this page..."}}},n=e,l=(a("b063"),a("2877")),r=Object(l["a"])(n,i,c,!1,null,"6bbbbf9a",null);s["default"]=r.exports},a36b:function(t,s,a){t.exports=a.p+"static/img/404.a57b6f31.png"},b063:function(t,s,a){"use strict";a("2b45")}}]);

File diff suppressed because one or more lines are too long

@ -0,0 +1,36 @@
import request from "@/utils/request";
export function getList(params,isLoading=true){
return request({
method:'get',
url:'/api/admin/quality-callbacks/get-list',
params,
isLoading
})
}
export function getForm(id,params,isLoading=true){
return request({
method:'get',
url:`/api/admin/quality-callbacks/get-form/${id}`,
params,
isLoading
})
}
export function save(data){
return request({
method:'post',
url:'/api/admin/quality-callbacks/save',
data
})
}
export function destroy(id,data){
return request({
method:'post',
url:`/api/admin/quality-callbacks/delete/${id}`,
data
})
}

@ -256,6 +256,9 @@ export default {
}}>
{
tableItem.map((item, index) => {
if ($scopedSlots[item.prop]) {
return $scopedSlots[item.prop](item, index);
}
//
if (item.customFn) {
return (

@ -0,0 +1,432 @@
<template>
<div class="container">
<!--查询-->
<div>
<div ref="lxHeader">
<lx-header icon="md-apps" style="margin-bottom: 10px; border: 0px; margin-top: 15px" text="质控管理">
<div slot="content"></div>
<slot>
<div>
<Input placeholder="关键字搜索" v-model="select.keyword" style="width: 200px; margin-right: 10px" />
<Button style="margin-left: 10px" type="primary"
@click="total = 0,select.page = 1,getWorkers()">查询</Button>
<!-- <Button style="margin-left: 10px" type="primary"
@click="$refs['addWorker'].type = 'add',$refs['addWorker'].isShow = true">创建护工
</Button> -->
<Button type="primary" style="margin-left: 10px" @click="exportExcel(new Date().getTime())">导出</Button>
</div>
</slot>
</lx-header>
</div>
</div>
<!-- 表格 -->
<xy-table :list="list" :table-item="tableItem" :total="total" @delete="destroy" @editor="editor"
@pageSizeChange="e => select.page_size = e" @pageIndexChange="e => {select.page = e;getWorkers()}">
<template v-slot:forms>
<!-- 遍历列配置 forms每个列对应一个配置项 -->
<el-table-column
v-for="(colConfig, index) in forms"
:key="index"
width="200"
header-align="center"
align="center"
:label="colConfig.ask"
>
<template v-slot:default="scope">
<!-- 找到当前列对应的行实际数据通过索引匹配 -->
<!-- 假设 forms scope.row.forms 顺序一致索引相同 -->
<template v-if="scope.row.forms && scope.row.forms[index]">
<!-- 当前行的实际数据项 -->
<!-- 处理 checkbox 类型 -->
<template v-if="colConfig.type === 'checkbox'">
<div>
{{ joinSelectedOptions(scope.row.forms[index].options || []) }}
</div>
</template>
<!-- 处理普通分数类型 -->
<template v-else>
<div>
{{ scope.row.forms[index].score !== '' ? scope.row.forms[index].score : '-' }} <!-- 空值显示 - -->
</div>
</template>
</template>
<!-- 行数据不存在时显示默认值 -->
<template v-else>
<div>-</div>
</template>
</template>
</el-table-column>
</template>
<template v-slot:files>
<el-table-column
width="200"
header-align="center"
align="center"
label="回访图片"
>
<template v-slot:default="scope">
<template v-if="scope.row.files">
<div style="display:flex">
<el-image
v-for="item in scope.row.files"
style="width: 60px; height: 60px;margin:5px"
:src="item.url"
:preview-src-list="scope.row.files.map(item=>item.url)"></el-image>
</div>
</template>
</template>
</el-table-column>
</template>
<template v-slot:sign_image>
<el-table-column
width="200"
header-align="center"
align="center"
label="服务对象/家属签名"
>
<template v-slot:default="scope">
<el-image
v-if="scope.row.sign_image"
style="width: 100px; height: 100px"
:src="scope.row.sign_image.url"
:preview-src-list="[scope.row.sign_image.url]"></el-image>
</template>
</el-table-column>
</template>
<template v-slot:admin_sign_image>
<el-table-column
width="200"
header-align="center"
align="center"
label="调查人员签名"
>
<template v-slot:default="scope">
<el-image
v-if="scope.row.admin_sign_image"
style="width: 100px; height: 100px"
:src="scope.row.admin_sign_image.url"
:preview-src-list="[scope.row.admin_sign_image.url]"></el-image>
</template>
</el-table-column>
</template>
<template v-slot:btns>
<div></div>
<!-- <el-table-column
fixed="right"
width="200"
header-align="center"
align="left"
label="操作"
>
<template v-slot:default="scope">
<Poptip
v-if="!$store.getters.myRoles.find(i => i.name === '质控员')"
transfer
confirm
title="确认要删除?"
@on-ok="destroy(scope.row)"
>
<Button size="small" type="error" ghost style="margin-right: 6px"
>删除</Button
>
</Poptip>
<Button
v-if="!$store.getters.myRoles.find(i => i.name === '质控员')"
size="small"
ghost
type="primary"
@click="editor(scope.row)"
style="margin-right: 6px"
>编辑</Button
>
</template>
</el-table-column> -->
</template>
</xy-table>
<!-- <add-worker
ref="addWorker"
@refresh="getWorkers"></add-worker> -->
</div>
</template>
<script>
import {
getList,
destroy
} from '@/api/quality'
import { download } from "@/utils/downloadRequest"
// import addWorker from "@/views/worker/component/addWorker";
export default {
components: {
// addWorker
},
data() {
return {
select: {
page: 1,
page_size: 10,
keyword: '',
is_simple: 0
},
total: 0,
list: [],
tableItem: [{
prop: 'date',
label: '回访日期',
width: 180,
fixed: 'left'
}, {
prop: 'nurse_name',
label: '护理员',
width: 180,
fixed: 'left'
}, {
label: '总分',
prop: 'total_score',
width: 120,
fixed: 'left'
} ,{
prop: 'customer.name',
label: '姓名',
width: 180,
},
{
prop: 'customer.sex',
label: '性别',
width: 120,
},
{
prop: 'customer.idcard',
label: "身份证号",
width: 230
},
{
prop: 'customer.phone',
label: "联系电话",
width: 180
},
{
prop: 'customer.contact_name',
label: "紧急联系人",
width: 140
},
{
prop: 'customer.contact_phone',
label: '紧急联系电话',
width: 180
}, {
prop: 'forms',
label: '考评'
}, {
prop: 'tip',
label: '对护理员哪些方面要求改进',
width: 180,
align: 'left'
}, {
prop: 'sure',
label: '对护理员有哪些方面肯定',
width: 180,
align: 'left'
}, {
prop: 'remark',
label: '备注',
width: 180,
align: 'left'
}, {
prop: 'address',
label: '回访地址',
width: 180,
align: 'left'
},{
prop: 'files',
label: '回访图片',
width: 180,
align: 'left'
},{
prop: 'sign_image',
label: '服务对象/家属签名',
width: 180,
align: 'left',
},{
prop: 'admin_sign_image',
label: '调查人员签名',
width: 180,
align: 'left'
}
],
forms: [{
ask: '执证上岗(工作证完整无损且佩戴在身)(2分)',
max: 2,
min: 0,
score: ''
}, {
ask: '工作服整洁、穿戴整齐(3分)',
max: 3,
min: 0,
score: ''
}, {
ask: '仪容仪表(指甲、束发)(2分)',
max: 2,
min: 0,
score: ''
}, {
ask: '对应本次服务所需工具齐全、性能完好(3分)',
max: 3,
min: 0,
score: ''
}, {
ask: '上门核对客户信息正确;地址、电话正确(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '告知客户可以提供的服务项目及本次上门服务的时长(5分)',
max: 3,
min: 0,
score: ''
}, {
ask: '客户选择本次服务项目(合法合规)(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '服务态度积极主动,不推托,不生硬拒绝(微笑服务)(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '服务内容、纸质工单、系统派单三者一致(个性化服务最后)(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '工单服务项目能保质保量完成(质量标准参考入户检查表)(50分)',
max: 50,
min: 0,
score: ''
}, {
ask: '抽查背诵一项服务流程(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '评估现场服务流程准确(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '能准确知晓并说出公司全称(每次上门先介绍)(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '每次上门服务前都提前预约(至少提前一天预约)(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '服务前后对比明显,所需部位消毒及时准确(5分)',
max: 5,
min: 0,
score: ''
}, {
ask: '所需服务技能娴熟欠缺一项扣2分扣完为止(10分)',
max: 10,
min: 0,
score: ''
}, {
ask: '其他(涉及此类一律按照 0 分处理)',
max: 10,
type: 'checkbox',
min: 0,
score: '',
options: [{
name: '服务中存在人身及环境安全',
checked: false,
}, {
name: '服务中脱岗',
checked: false,
}, {
name: '无正当理由不提供服务',
checked: false,
}, {
name: '恶意消耗工时、虚假工单、重叠工单、人卡不符、多卡一户现象',
checked: false,
}, {
name: '拒绝客户提出的正当要求',
checked: false,
}, {
name: '替代客户签名',
checked: false,
}, {
name: '存在向客户推销非官方商品、索要物品或货币行为',
checked: false,
}, {
name: '不积极配合公司稽查',
checked: false,
}, {
name: '违反公司原则性规章制度行为',
checked: false,
}]
}],
}
},
methods: {
async getWorkers() {
const res = await getList(this.select)
this.list = res.data
this.total = res.total
},
joinSelectedOptions(options) {
console.log("options", options)
// checked true
const selectedOptions = options.filter(option => option.checked === true);
// name 使
return selectedOptions.map(option => option.name).join('');
},
async exportExcel(sheetName) {
let loading;
try {
loading = this.$loading({
lock: true,
background: "rgba(0,0,0,0.4)",
text: "正在导出..."
})
download('/api/admin/quality-callbacks/get-list','get',{
...this.select,
page: 1,
page_size: 9999,
is_export:1
},`质控回访.xlsx`)
loading.close()
} catch (err) {
loading.close()
}
},
editor(row) {
this.$refs['addWorker'].type = 'editor'
this.$refs['addWorker'].id = row.id
this.$refs['addWorker'].isShow = true
},
destroy(row) {
destroy(row.id).then(res => {
this.$successMessage('destroy', '回访记录')
this.getWorkers()
})
}
},
mounted() {
this.getWorkers()
}
}
</script>
<style lang="scss" scoped>
</style>
Loading…
Cancel
Save