提交 85bd6ea5 编写于 作者: jq's avatar jq

发布dev

上级 3e1ff88f
{ {
"editor.fontSize": 15 // 是否允许自定义的snippet片段提示
} "editor.snippetSuggestions": "top",
\ No newline at end of file // vscode默认启用了根据文件类型自动设置tabsize的选项
"editor.detectIndentation": false,
// 重新设定tabsize
"editor.tabSize": 2,
// #每次保存的时候自动格式化
"editor.formatOnSave": false,
// #每次保存的时候将代码按eslint格式进行修复
"eslint.autoFixOnSave": true,
"editor.fontWeight": "300",
"editor.formatOnType": false,
"workbench.iconTheme": "material-icon-theme",
"git.confirmSync": false,
"team.showWelcomeMessage": false,
"window.zoomLevel": 0,
// "editor.renderWhitespace": "boundary",
"editor.cursorBlinking": "smooth",
"editor.minimap.enabled": true,
// "editor.minimap.renderCharacters": false,
"window.title": "${dirty}${activeEditorMedium}${separator}${rootName}",
"editor.codeLens": true,
//eslint 代码自动检查相关配置
"eslint.enable": true,
"eslint.run": "onType",
"eslint.options": {
"extensions": [
".js",
".vue"
]
},
// 添加 vue 支持
"eslint.validate": [
"javascriptreact",
"vue",
"javascript",
{
"language": "vue",
"autoFix": true
},
"html",
{
"language": "html",
"autoFix": true
}
],
// #让prettier使用eslint的代码格式进行校验
"prettier.eslintIntegration": true,
// #去掉代码结尾的分号
"prettier.semi": false,
// #使用带引号替代双引号
"prettier.singleQuote": true,
// #让函数(名)和后面的括号之间加个空格
"javascript.format.insertSpaceBeforeFunctionParenthesis": true,
// #这个按用户自身习惯选择
"vetur.format.defaultFormatter.html": "js-beautify-html",
// #让vue中的js按编辑器自带的ts格式进行格式化
"vetur.format.defaultFormatter.js": "vscode-typescript",
"explorer.confirmDelete": false,
"vetur.format.defaultFormatterOptions": {
"js-beautify-html": {
"wrap_attributes": "force-aligned"
// #vue组件中html代码格式化样式
}
},
"files.associations": {
"*.cjson": "jsonc",
"*.wxss": "css",
"*.wxs": "javascript"
},
"emmet.includeLanguages": {
"wxml": "html"
},
"minapp-vscode.disableAutoConfig": true,
"window.menuBarVisibility": "visible",
"git.enableSmartCommit": true,
"git.autofetch": true,
"liveServer.settings.donotShowInfoMsg": true,
"[html]": {
"editor.defaultFormatter": "vscode.html-language-features"
},
"javascript.updateImportsOnFileMove.enabled": "always",
"workbench.colorTheme": "SynthWave '84",
"editor.fontSize": 16,
"search.followSymlinks": false,
"workbench.sideBar.location": "left",
// 是否开启保存自动格式化
"zenMode.restore": true,
"breadcrumbs.enabled": true,
"gitlens.advanced.messages": {
"suppressLineUncommittedWarning": true
},
"javascript.format.placeOpenBraceOnNewLineForControlBlocks": true,
"editor.formatOnPaste": false,
"editor.cursorStyle": "line-thin",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
}
}
<template>
<div class="tab-set-wrap">
<div class="tab-set">
<el-popover
v-model="visible"
placement="bottom"
width="200"
trigger="click"
@hide="popoverHide"
>
<div class="tab-set-title">
自定义表头
</div>
<div class="tab-set-select">
<div class="select-list">
<el-checkbox
v-model="checkAll"
:indeterminate="isIndeterminate"
@change="handleCheckAllChange"
>
全选
</el-checkbox>
<el-checkbox-group
v-model="checkedProps"
class="checkbox-group"
@change="handlecheckedPropsChange"
>
<el-checkbox
v-for="tb in tabProps"
:key="tb"
:label="tb"
class="select-checkbox"
/>
</el-checkbox-group>
</div>
<div class="select-btn-wrap">
<el-button
size="mini"
@click="cancleTp"
>
取消
</el-button>
<el-button
type="primary"
size="mini"
@click="confirmTp"
>
确定
</el-button>
</div>
</div>
<div
slot="reference"
class="set-btn"
>
<i class="el-icon-setting" />自定义表头
</div>
</el-popover>
</div>
</div>
</template>
<script>
export default {
props: {
allProps: {
// 所有的props
type: Array,
default() {
return [];
},
},
showProps: {
// 已经展示的props
type: Array,
default() {
return [];
},
},
},
data() {
return {
checkAll: false, // 是否全选
checkedProps: [], // 需要展示的props(选中的props)
tabProps: [], // 所有的props
isIndeterminate: true, // 表示 checkbox 的不确定状态,一般用于实现全选的效果
visible: false,
filtrateData: [], // 筛选后的需要展示数据
};
},
watch: {
allProps: {
immediate: true,
handler(val) {
this.tabProps = this.setData(val);
// 设置默认全选状态
this.handlecheckedPropsChange(this.checkedProps);
},
deep: true,
},
showProps: {
immediate: true,
handler(val) {
this.checkedProps = this.setData(val);
// 设置默认全选状态
this.handlecheckedPropsChange(this.checkedProps);
},
deep: true,
},
},
methods: {
// reFeach() {
// this.$emit('reFeach');
// },
// 全选
handleCheckAllChange(val) {
this.checkedProps = val ? this.tabProps : [];
this.isIndeterminate = false;
},
// 单选
handlecheckedPropsChange(value) {
const checkedCount = value.length;
this.checkAll = checkedCount === this.tabProps.length;
this.isIndeterminate =
checkedCount > 0 && checkedCount < this.tabProps.length;
},
/**
* 数据格式化
* @param arr 需要格式化的数组[{ prop: "ID",label: "医生ID",showtooltip: false,}]
* @return newArr 格式化后数组 [label]
*/
setData(arr) {
const newData = [];
for (const item of arr) {
newData.push(item.label);
}
return newData;
},
// 将数据格式还原
confirmTp() {
const newArr = [];
for (const obj of this.allProps) {
for (const item of this.checkedProps) {
if (obj.label == item) {
newArr.push(obj);
}
}
}
this.filtrateData = newArr;
this.$emit('updateTableProps', this.filtrateData);
this.$emit('reFeach');
this.visible = false;
},
cancleTp() {
this.visible = false;
},
popoverHide() {},
},
};
</script>
<style lang="scss" scoped>
.tab-set-wrap {
.tab-set {
cursor: pointer;
display: flex;
justify-content: flex-end;
padding: 20px 0;
.set-btn {
color: #0d9078;
}
}
}
.tab-set-title {
background: #0d9078;
color: #fff;
margin: -10px -12px 0;
padding: 8px;
text-align: center;
}
.tab-set-select {
position: relative;
height: 400px;
width: 200px;
background: #fff;
z-index: 100;
border-radius: 4px;
display: flex;
flex-direction: column;
.select-list {
padding: 4px 10px;
overflow-y: scroll;
flex: 1;
.checkbox-group {
padding-top: 10px;
.select-checkbox {
display: block;
}
}
}
.select-btn-wrap {
padding: 10px 0;
}
}
</style>
<template>
<div class="table-set-component">
<tab-set
:all-props="dtTableData"
:show-props="showTableData"
@reFeach="reFeach"
@updateTableProps="updateTableProps"
/>
<el-table
v-if="isFreash"
v-loading="loading"
border
class="search-table"
:height="tableHeight"
style="width: 100%"
:data="tableData"
@sort-change="sortfunc"
@selection-change="handleSelectionChange"
>
<el-table-column
type="selection"
width="55"
fixed="left"
/>
<el-table-column
v-for="item in showTableData"
:key="item.prop"
:prop="item.prop"
:label="item.label"
:show-overflow-tooltip="item.showtooltip"
:sortable="
item.prop == 'appointBeginTime' || item.prop == 'assistantBeginTime'
? 'custom'
: false
"
min-width="170"
align="center"
>
<template slot-scope="scope">
<div v-if="scope.column.property == 'appointBeginTime'">
<p>{{ scope.row.appointBeginTime }}</p>
<p>{{ scope.row.appointEndTime }}</p>
</div>
<div v-else-if="scope.column.property == 'assistantBeginTime'">
<p>{{ scope.row.assistantBeginTime }}</p>
<p>{{ scope.row.assistantEndTime }}</p>
</div>
<div v-else-if="scope.column.property == 'receptionBeginTime'">
<p>{{ scope.row.receptionBeginTime }}</p>
<p>{{ scope.row.receptionEndTime }}</p>
</div>
<div v-else>
<p>{{ scope.row[scope.column.property] }}</p>
</div>
</template>
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
min-width="400"
>
<template slot-scope="scope">
<el-button
v-if="showBtn(scope.row, 25)"
type="primary"
size="small"
class="btn"
@click="witeDiagnose(scope.row)"
>
设为待问诊
</el-button>
<el-button
v-if="
showBtn(scope.row, 21, 22, 23, 24, 25, 26, 3, 2) &&
menuType == 1
"
type="primary"
size="small"
class="btn"
@click="changeRun(scope.row)"
>
更换运营
</el-button>
<el-button
type="primary"
size="small"
class="btn"
@click="goDetail(scope.row, false)"
>
查看详情
</el-button>
<el-button
v-if="
showBtn(scope.row, 2, 21, 22, 23, 24, 25, 26, 3) &&
menuType == 1
"
type="primary"
size="small"
class="btn"
@click="cancelRefund(scope.row)"
>
取消/退款
</el-button>
<el-button
v-if="showBtn(scope.row, 21)"
type="primary"
size="small"
class="btn"
@click="witeGo(scope.row)"
>
设为稍后跟进
</el-button>
<el-button
v-if="showBtn(scope.row, 22, 21)"
type="primary"
size="small"
class="btn"
@click="waitMatchDot(scope.row)"
>
设为待匹配医生
</el-button>
<el-button
v-if="showBtn(scope.row, 3, 4, 5, 6, 21, 22, 23, 24, 25, 26)"
type="primary"
size="small"
class="btn"
@click="sendMessage(scope.row)"
>
发送消息
</el-button>
<el-button
v-if="showBtn(scope.row, 3, 26)"
type="primary"
size="small"
class="btn"
@click="joinDiagnose(scope.row)"
>
加入问诊
</el-button>
<el-button
v-if="
showBtn(scope.row, 2, 3, 4, 6, 21, 22, 23, 24, 25, 26, 5, 6)
"
type="primary"
size="small"
class="btn"
@click="goDetail(scope.row, true)"
>
编辑
</el-button>
<el-button
v-if="showBtn(scope.row, 23)"
type="primary"
size="small"
class="btn"
@click="waitHzeDot(scope.row)"
>
设为待协调医生
</el-button>
<el-button
v-if="showBtn(scope.row, 23, 24)"
type="primary"
size="small"
class="btn"
@click="waitMatchTime(scope.row)"
>
设为待确认时间
</el-button>
<el-button
v-if="showBtn(scope.row, 3, 25, 26)"
type="primary"
size="small"
class="btn"
@click="reMatchDot(scope.row, 10)"
>
重新匹配医生
</el-button>
<el-button
v-if="showBtn(scope.row, 3, 25, 26)"
type="primary"
size="small"
class="btn"
@click="reMatchDot(scope.row, 16)"
>
重新联系助诊医生
</el-button>
<el-button
v-if="showBtn(scope.row, 3, 26)"
type="primary"
size="small"
class="btn"
@click="changeTime(scope.row)"
>
修改时间
</el-button>
<el-button
v-if="showBtn(scope.row, 3)"
:type="scope.row.completed ? 'danger' : 'primary'"
size="small"
class="btn"
@click="doneHandle(scope.row)"
>
设为已完成
</el-button>
<el-button
v-if="showBtn(scope.row, 2)"
type="primary"
size="small"
class="btn"
@click="setOffice(scope.row)"
>
设置科室
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<div
v-if="tableData && tableData.length"
class="pagination"
>
<el-pagination
background
:current-page="searchParam.pageNo"
:page-sizes="[15, 30, 50, 100]"
:page-size="searchParam.pageSize"
layout="total, sizes, prev, pager, next, jumper"
:total="totalRows"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
</div>
</template>
<script>
import { DIAGNOS_LIST_NEW } from '@/utils/GeneralData/diagnosis-list-new';
import TabSet from '@/components/common/tab-set';
export default {
components: {
TabSet,
},
props: {
menuType: {
type: Number,
default: 1,
},
loading: {
type: Boolean,
default: false,
},
tableData: {
type: Array,
default() {
return [];
},
},
searchParam: {
type: Object,
default: () => {},
},
totalRows: {
type: Number,
default: 0,
},
tableHeight: {
type: Number,
default: 500,
},
multipleSelection: {
type: Array,
default: () => {
return [];
},
},
},
data() {
return {
dtTableData: DIAGNOS_LIST_NEW,
showTableData: DIAGNOS_LIST_NEW,
isFreash:true,
};
},
watch: {
},
mounted() {
},
methods: {
// 获取展示的tab
updateTableProps(newdata) {
this.showTableData = newdata;
},
reFeach() {
this.isFreash = false;
this.$nextTick(() => {
this.isFreash = true;
});
},
// 选中的数据
handleSelectionChange(val) {
this.multipleSelection = val;
this.$emit('update:multipleSelection', this.multipleSelection);
},
sortfunc(data) {
this.$emit('sortfunc', data);
},
showBtn(row, ...arr) {
return arr.includes(row.status);
// return true;
},
// 分页
handleSizeChange(value) {
this.$emit('handleSizeChange', value);
},
handleCurrentChange(value) {
this.$emit('handleCurrentChange', value);
},
// 设为待问诊
witeDiagnose(row) {
this.$emit('witeDiagnose', row);
},
// 更换运营
changeRun(row) {
this.$emit('changeRun', row);
},
// 查看详情 \编辑
goDetail(row, flag) {
this.$emit('goDetail', row, flag);
},
// 取消/退款
cancelRefund(row) {
this.$emit('cancelRefund', row);
},
// 设为稍后跟进
witeGo(row) {
this.$emit('witeGo', row);
},
// 设为待匹配医生
waitMatchDot(row) {
this.$emit('waitMatchDot', row);
},
// 发送消息
sendMessage(row) {
this.$emit('sendMessage', row);
},
// 加入问诊
joinDiagnose(row) {
this.$emit('joinDiagnose', row);
},
// 匹配运营
// matchRun(row) {
// this.$emit("matchRun", row);
// },
// 设为待分诊
// waitDiagnose(row) {
// this.$emit("waitDiagnose", row);
// },
// 设为待协调医生
waitHzeDot(row) {
this.$emit('waitHzeDot', row);
},
// 设为待确认时间
waitMatchTime(row) {
this.$emit('waitMatchTime', row);
},
// 重新匹配医生
reMatchDot(row, type) {
this.$emit('reMatchDot', row, type);
},
// 修改时间
changeTime(row) {
this.$emit('changeTime', row);
},
// 发起问诊
// call(row) {
// this.$emit("call", row);
// },
// 设为已完成
doneHandle(row) {
this.$emit('doneHandle', row);
},
goEdite(row) {
this.$emit('goEdite', row);
},
setOffice(value) {
this.$emit('setOffice', value);
},
},
};
</script>
<style lang="scss" scoped>
.btn {
margin-top: 5px;
}
</style>
export const DIAGNOS_LIST_NEW = [
{
prop: 'diagnoseLogId',
label: 'ID',
showtooltip: false,
},
{
prop: 'orderNo',
label: '订单ID',
showtooltip: false,
},
{
prop: 'diagnoseTypeStr',
label: '预约类型',
showtooltip: false,
with:'200'
},
{
prop: 'statusStr',
label: '状态',
showtooltip: false,
},
{
prop: 'statusRemark',
label: '状态备注',
showtooltip: false,
},
{
prop: 'toFollowReason',
label: '稍后跟进状态',
showtooltip: false,
},
{
prop: 'appointBeginTime',
label: '预约时间',
showtooltip: false,
},
// appointBeginTime appointEndTime 预约时间
{
prop: 'operateUserId',
label: '运营人员ID',
showtooltip: false,
},
{
prop: 'operateUserName',
label: '运营人员',
showtooltip: false,
},
{
prop: 'userName',
label: '助诊医生',
showtooltip: false,
},
{
prop: 'userMobile',
label: '助诊电话',
showtooltip: false,
},
{
prop: 'assistantBeginTime',
label: '助诊医生意向时间',
showtooltip: false,
},
// assistantBeginTime assistantEndTime 助诊医生意向时间
{
prop: 'assistantRemark',
label: '助诊备注',
showtooltip: false,
},
{
prop: 'department',
label: '预约科室',
showtooltip: false,
},
{
prop: 'triageDepartment',
label: '分诊科室',
showtooltip: false,
},
{
prop: 'triageRemark',
label: '分诊备注',
showtooltip: false,
},
{
prop: 'doctorName',
label: '接诊医生',
showtooltip: false,
},
{
prop: 'outsideDoctor',
label: '站外医生姓名',
showtooltip: false,
},
{
prop: 'receptionBeginTime',
label: '接诊医生意向时间',
showtooltip: false,
},
// receptionBeginTime receptionEndTime 接诊医生意向时间
{
prop: 'patientName',
label: '患者姓名',
showtooltip: false,
},
{
prop: 'age',
label: '患者年龄',
showtooltip: false,
},
{
prop: 'patientMobilePhone',
label: '患者电话',
showtooltip: false,
},
{
prop: 'illnessDetail',
label: '病情描述',
showtooltip: false,
},
{
prop: 'idCard',
label: '证件号',
showtooltip: false,
},
{
prop: 'sexStr',
label: '性别',
showtooltip: false,
},
{
prop: 'diagnoseStageStr',
label: '初/复诊',
showtooltip: false,
},
{
prop: 'determineFlagStr',
label: '确诊',
showtooltip: false,
},
{
prop: 'diagnoseDisease',
label: '确诊疾病',
showtooltip: false,
},
{
prop: 'triageOperatorName',
label: '分诊运营',
showtooltip: false,
},
{
prop: 'receptionOperatorName',
label: '接诊运营',
showtooltip: false,
},
{
prop: 'diagnoseAdvice',
label: '诊断建议',
showtooltip: true,
},
{
prop: 'crrsName',
label: '招募人',
showtooltip: false,
},
{
prop: 'diagnoseChannelStr',
label: '问诊方式',
showtooltip: false,
},
{
prop: 'doneTime',
label: '完成时间',
showtooltip: false,
},
{
prop: 'cancelTime',
label: '退款时间',
showtooltip: false,
},
{
prop: 'createdTime',
label: '创建时间',
showtooltip: false,
},
{
prop: 'followFlagStr',
label: '是否跟进',
showtooltip: false,
},
{
prop: 'drugFollowStatusStr',
label: '药品跟进状态',
showtooltip: false,
},
{
prop: 'drugFollow',
label: '药品跟进',
showtooltip: false,
},
{
prop: 'checkFollow',
label: '检查跟进',
showtooltip: false,
},
{
prop: 'otherFollowStatusStr',
label: '其他跟进事项状态',
showtooltip: false,
},
{
prop: 'otherFollow',
label: '其他跟进事项',
showtooltip: false,
},
{
prop: 'remark',
label: '跟进备注',
showtooltip: true,
}
];
...@@ -276,15 +276,15 @@ ...@@ -276,15 +276,15 @@
</el-badge> </el-badge>
</span> </span>
</div> </div>
<table-component <table-set-component
:menu-type="searchParam.menuType" :menu-type="searchParam.menuType"
:t-data="tableData"
:page-no="searchParam.pageNo"
:page-size="searchParam.pageSize"
:total-rows="totalRows"
:loading="loading" :loading="loading"
:table-data="tableData"
:search-param="searchParam"
:table-height="tableHeight" :table-height="tableHeight"
:total-rows="totalRows"
:multiple-selection.sync="multipleSelection" :multiple-selection.sync="multipleSelection"
@handleClick="handleClick"
@sortfunc="sortfunc" @sortfunc="sortfunc"
@witeDiagnose="witeDiagnose" @witeDiagnose="witeDiagnose"
@changeRun="changeRun" @changeRun="changeRun"
...@@ -386,7 +386,6 @@ ...@@ -386,7 +386,6 @@
let vm = null; let vm = null;
import { updateDiagnosis } from '../../../utils/diagnosis'; import { updateDiagnosis } from '../../../utils/diagnosis';
import { base64decode } from '../../../utils/utils.js'; import { base64decode } from '../../../utils/utils.js';
import TableComponent from '@/components/list/table-c';
import { import {
TYPE_LIST, TYPE_LIST,
IS_FLLOW, IS_FLLOW,
...@@ -414,9 +413,10 @@ ...@@ -414,9 +413,10 @@
import AppointmentTime from '../../../components/common/appointment-time'; import AppointmentTime from '../../../components/common/appointment-time';
import DiagnosisTime from '../../../components/common/diagnosis-time'; import DiagnosisTime from '../../../components/common/diagnosis-time';
import RematchingDoctor from '../../../components/common/rematching-doctor'; import RematchingDoctor from '../../../components/common/rematching-doctor';
import TableSetComponent from '@/components/list/table-set-component';
export default { export default {
components: { components: {
TableComponent, TableSetComponent,
FollowupComponent, FollowupComponent,
MatchComponent, MatchComponent,
RefundComponent, RefundComponent,
...@@ -430,6 +430,7 @@ ...@@ -430,6 +430,7 @@
}, },
data() { data() {
return { return {
isFreash:true,
isUp: false, isUp: false,
endFlag: false, endFlag: false,
beginFlag: false, beginFlag: false,
...@@ -548,7 +549,6 @@ ...@@ -548,7 +549,6 @@
return getCountQuery().then((res) => { return getCountQuery().then((res) => {
if (res.code == '000000') { if (res.code == '000000') {
this.setTable(res.data); this.setTable(res.data);
this.tabrefresh = false; this.tabrefresh = false;
this.$nextTick(() => { this.$nextTick(() => {
this.tabrefresh = true; this.tabrefresh = true;
...@@ -557,7 +557,6 @@ ...@@ -557,7 +557,6 @@
} }
}); });
}, },
init() { init() {
const fullPath = this.$route.fullPath; const fullPath = this.$route.fullPath;
let fromType = 1; let fromType = 1;
...@@ -691,14 +690,22 @@ ...@@ -691,14 +690,22 @@
} else if (val.paneName == 102) { } else if (val.paneName == 102) {
this.searchParam.hasToFollowReason = 2; this.searchParam.hasToFollowReason = 2;
} else { } else {
if (
if (Object.prototype.hasOwnProperty.call(this.searchParam, 'hasToFollowReason')) { Object.prototype.hasOwnProperty.call(
this.searchParam,
'hasToFollowReason'
)
) {
delete this.searchParam.hasToFollowReason; delete this.searchParam.hasToFollowReason;
} }
} }
} else { } else {
if (
if ( Object.prototype.hasOwnProperty.call(this.searchParam, 'hasToFollowReason')) { Object.prototype.hasOwnProperty.call(
this.searchParam,
'hasToFollowReason'
)
) {
delete this.searchParam.hasToFollowReason; delete this.searchParam.hasToFollowReason;
} }
} }
...@@ -1122,4 +1129,19 @@ ...@@ -1122,4 +1129,19 @@
right: 5px; right: 5px;
top: 10px; top: 10px;
} }
body .el-table th.gutter{
display: table-cell!important;
}
body .el-table colgroup.gutter{
display: table-cell!important;
}
.el-table .warning-row {
background: oldlace;
}
.el-table .success-row {
background: #f0f9eb;
}
</style> </style>
...@@ -71,7 +71,7 @@ module.exports = { ...@@ -71,7 +71,7 @@ module.exports = {
port: 8080, port: 8080,
proxy: { proxy: {
'/proxy': { '/proxy': {
target: 'https://test1-sc.yunqueyi.com/', target: 'https://dev-sc.yunqueyi.com/',
ws: false, ws: false,
changeOrigin: true, changeOrigin: true,
secure: true, secure: true,
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册