Files
ibs-fullstack/ruoyi-ui/src/views/taskManage/PADvisitRecord/index.vue
2026-03-27 18:31:43 +08:00

1056 lines
32 KiB
Vue

<template>
<div class="main">
<div class="content">
<el-radio-group
class="header-radio"
v-model="selectedTab"
@input="handleChange"
>
<template v-if="String(deptId).substring(0, 3) === '875'">
<el-radio-button
label="0"
:disabled="isPublic"
:class="{ 'btn-disabled': isPublic }"
>个人</el-radio-button
>
<el-radio-button
label="1"
:disabled="isPublic"
:class="{ 'btn-disabled': isPublic }"
>商户</el-radio-button
>
<el-radio-button
label="2"
:disabled="isPrivate"
:class="{ 'btn-disabled': isPrivate }"
>企业</el-radio-button
>
</template>
<template v-else>
<el-radio-button
label="2"
:disabled="isPrivate"
:class="{ 'btn-disabled': isPrivate }"
>企业</el-radio-button
>
<el-radio-button
label="0"
:disabled="isPublic"
:class="{ 'btn-disabled': isPublic }"
>个人</el-radio-button
>
<el-radio-button
label="1"
:disabled="isPublic"
:class="{ 'btn-disabled': isPublic }"
>商户</el-radio-button
>
</template>
</el-radio-group>
<div class="searchForm">
<el-form
ref="searchForm"
:model="searchForm"
label-width="80px"
:inline="true"
>
<el-form-item label="柜员名称">
<el-input
v-model="searchForm.visName"
placeholder="请输入"
@blur="handleSearch"
clearable
@clear="handleSearch"
/>
</el-form-item>
<el-form-item label="柜员号" class="staff-id-filter">
<el-input
v-model="searchForm.visId"
placeholder="请输入"
@blur="handleSearch"
clearable
@clear="handleSearch"
/>
</el-form-item>
<el-form-item label="走访时间">
<el-date-picker
v-model="searchForm.visTime"
type="date"
@change="handleSearch"
value-format="yyyy-MM-dd"
></el-date-picker>
</el-form-item>
<el-form-item label="客户证件号" label-width="120" v-if="selectedTab === '0'">
<el-input
v-model="searchForm.custIdc"
placeholder="请输入"
@blur="handleSearch"
clearable
@clear="handleSearch"
/>
</el-form-item>
<el-form-item label="企业(商户)统信码" label-width="140" v-else>
<el-input
v-model="searchForm.socialCreditCode"
placeholder="请输入"
@blur="handleSearch"
clearable
@clear="handleSearch"
/>
</el-form-item>
<el-form-item label="异常标签" v-if="is875">
<el-select
v-model="searchForm.abnormalVisitTag"
placeholder="请输入"
@blur="handleSearch"
clearable
@clear="handleSearch"
>
<el-option label="正常" value="0"></el-option>
<el-option label="走访频率异常" value="1"></el-option>
<el-option label="走访持续时长异常" value="2"></el-option>
<el-option label="签退时间异常" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item label="营销方式">
<el-select
v-model="searchForm.marketingWay"
placeholder="请选择"
@blur="handleSearch"
clearable
@clear="handleSearch"
>
<el-option label="实地" value="0"></el-option>
<el-option label="电话" value="1"></el-option>
<el-option label="短信" value="2"></el-option>
<el-option label="拜访未触达" value="3"></el-option>
<el-option label="其他" value="4"></el-option>
</el-select>
</el-form-item>
<el-form-item label="走访结果">
<el-select
v-model="searchForm.interRes"
placeholder="请选择"
@blur="handleSearch"
clearable
@clear="handleSearch"
>
<el-option label="已走访" value="0"></el-option>
<el-option label="过期未走访" value="1"></el-option>
<el-option label="走访未触达" value="2"></el-option>
<el-option label="待走访" value="3"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
size="small"
class="common-search-btn"
@click="handleSearch"
>查询</el-button
>
<el-button
size="small"
class="common-reset-btn"
type="plain"
@click="resetFilters"
>重置</el-button
>
</el-form-item>
</el-form>
</div>
<section class="operate-cnt">
<right-toolbar
@queryTable="handleRefersh"
:columns="is875 ? [...columns, ...columns875] : columns"
style="margin-left: auto"
></right-toolbar>
</section>
<el-table
:data="tableData"
style="width: 100%"
class="tableData"
v-loading="Loading"
max-height="600"
>
<el-table-column
align="left"
prop="campaignName"
label="活动名称"
show-overflow-tooltip
width="150px"
v-if="columns[0].visible"
></el-table-column>
<el-table-column
align="left"
prop="visName"
label="柜员名称"
show-overflow-tooltip
width="150px"
v-if="columns[1].visible"
></el-table-column>
<el-table-column
align="left"
prop="visId"
label="柜员号"
show-overflow-tooltip
width="150px"
v-if="columns[2].visible"
></el-table-column>
<el-table-column
align="left"
prop="deptId"
label="柜员部门"
show-overflow-tooltip
width="150px"
v-if="columns[3].visible"
></el-table-column>
<el-table-column
align="left"
prop="deptName"
label="部门名称"
show-overflow-tooltip
width="200px"
v-if="columns[4].visible"
></el-table-column>
<el-table-column
align="left"
prop="custName"
label="走访客户名称"
show-overflow-tooltip
width="150px"
v-if="columns[5].visible"
>
<template slot-scope="scope">
<el-button
v-if="isPersonalFeedbackTab && getPersonalViewCustId(scope.row)"
type="text"
@click="openPersonalView(scope.row)"
>{{ scope.row.custName }}</el-button>
<span v-else>{{ scope.row.custName }}</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="custIdc"
label="客户证件号"
show-overflow-tooltip
width="200px"
v-if="columns[6].visible && selectedTab === '0'"
>
<template slot-scope="scope">
<el-button
v-if="isPersonalFeedbackTab && getPersonalViewCustId(scope.row)"
type="text"
@click="openPersonalView(scope.row)"
>{{ scope.row.custIdc }}</el-button>
<span v-else>{{ scope.row.custIdc || "-" }}</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="socialCreditCode"
label="企业(商户)统信码"
show-overflow-tooltip
width="150px"
v-if="columns[7].visible && selectedTab !== '0'"
></el-table-column>
<el-table-column
align="left"
prop="custType"
label="客户类型"
show-overflow-tooltip
v-if="columns[8].visible"
>
<template slot-scope="scope">
<span v-if="scope.row.custType == '0'">个人</span>
<span v-if="scope.row.custType == '1'">商户</span>
<span v-if="scope.row.custType == '2'">企业</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="signInTime"
label="签到时间"
show-overflow-tooltip
width="180px"
v-if="columns[9].visible"
></el-table-column>
<el-table-column
align="left"
prop="signOutTime"
label="签退时间"
show-overflow-tooltip
width="180px"
v-if="columns[10].visible"
></el-table-column>
<el-table-column
align="left"
prop="signInAddress"
label="签到地址"
show-overflow-tooltip
width="150px"
v-if="columns[11].visible"
></el-table-column>
<el-table-column
align="left"
prop="signOutAddress"
label="签退地址"
show-overflow-tooltip
width="150px"
v-if="columns[12].visible"
></el-table-column>
<el-table-column
align="left"
prop="signInCoordinate"
label="签到坐标"
show-overflow-tooltip
width="150px"
v-if="columns[13].visible"
></el-table-column>
<el-table-column
align="left"
prop="signOutCoordinate"
label="签退坐标"
show-overflow-tooltip
width="150px"
v-if="columns[14].visible"
></el-table-column>
<el-table-column
align="left"
prop="marketingWay"
label="营销方式"
show-overflow-tooltip
width="120px"
>
<template slot-scope="scope">
<span v-if="scope.row.marketingWay == '0'">实地</span>
<span v-else-if="scope.row.marketingWay == '1'">电话</span>
<span v-else-if="scope.row.marketingWay == '2'">短信</span>
<span v-else-if="scope.row.marketingWay == '3'">拜访未触达</span>
<span v-else-if="scope.row.marketingWay == '4'">其他</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="interRes"
label="走访结果"
show-overflow-tooltip
width="120px"
>
<template slot-scope="scope">
<span v-if="scope.row.interRes == '0'">已走访</span>
<span v-else-if="scope.row.interRes == '1'">过期未走访</span>
<span v-else-if="scope.row.interRes == '2'">走访未触达</span>
<span v-else-if="scope.row.interRes == '3'">待走访</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="abnormalVisitTag"
label="异常走访标签"
show-overflow-tooltip
width="150px"
v-if="columns875[0].visible && is875"
>
<template slot-scope="scope">
<span v-if="scope.row.abnormalVisitTag == '0'">正常</span>
<span v-if="scope.row.abnormalVisitTag == '1'">走访频率异常</span>
<span v-if="scope.row.abnormalVisitTag == '2'">走访持续时长异常</span>
<span v-if="scope.row.abnormalVisitTag == '3'">签退时间异常</span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="abnormalVisitInfo"
label="异常走访信息"
show-overflow-tooltip
width="150px"
v-if="columns875[1].visible && is875"
></el-table-column>
<el-table-column
align="left"
prop="isValidCust"
label="是否为有效客户"
show-overflow-tooltip
width="150px"
v-if="columns[15].visible"
>
<template slot-scope="scope">
<span v-if="scope.row.isValidCust == '0'"></span>
<span v-if="scope.row.isValidCust == '1'"></span>
</template>
</el-table-column>
<el-table-column
align="left"
prop="remark"
label="走访备注"
show-overflow-tooltip
width="150px"
v-if="columns[16].visible"
></el-table-column>
<el-table-column align="left" prop="interAddr" label="实地拜访地址" show-overflow-tooltip width="180px" v-if="isPersonalFeedbackTab && columns[17].visible"></el-table-column>
<el-table-column align="left" prop="colStafName" label="协同走访客户经理" show-overflow-tooltip width="160px" v-if="isPersonalFeedbackTab && columns[18].visible"></el-table-column>
<el-table-column align="left" prop="laterNote" label="事后备注" show-overflow-tooltip width="180px" v-if="isPersonalFeedbackTab && columns[19].visible"></el-table-column>
<el-table-column align="left" prop="intentionProductValue" label="走访反馈" show-overflow-tooltip width="160px" v-if="isPersonalFeedbackTab && columns[20].visible"></el-table-column>
<el-table-column align="left" prop="feedbackStatus" label="反馈状态" show-overflow-tooltip width="120px" v-if="isPersonalFeedbackTab && columns[21].visible"></el-table-column>
<el-table-column align="left" prop="sourceOfInterview" label="走访来源" show-overflow-tooltip width="140px" v-if="isPersonalFeedbackTab && columns[22].visible"></el-table-column>
<el-table-column align="left" prop="filename" label="批量导入文件名" show-overflow-tooltip width="180px" v-if="isPersonalFeedbackTab && columns[23].visible"></el-table-column>
<el-table-column align="left" prop="outCallStatus" label="外呼状态" show-overflow-tooltip width="120px" v-if="isPersonalFeedbackTab && columns[24].visible"></el-table-column>
<el-table-column align="left" prop="outCallIntention" label="客户意愿" show-overflow-tooltip width="140px" v-if="isPersonalFeedbackTab && columns[25].visible"></el-table-column>
<el-table-column align="left" prop="source" label="走访渠道" show-overflow-tooltip width="120px" v-if="isPersonalFeedbackTab && columns[26].visible">
<template slot-scope="scope">
<span>{{ formatSourceLabel(scope.row.source) }}</span>
</template>
</el-table-column>
<el-table-column align="left" prop="analysisValue" label="nlp模型提取" show-overflow-tooltip width="140px" v-if="isPersonalFeedbackTab && columns[27].visible"></el-table-column>
<el-table-column align="left" prop="facility" label="预授信额度" show-overflow-tooltip width="140px" v-if="isPersonalFeedbackTab && columns[28].visible"></el-table-column>
<el-table-column v-if="isPersonalFeedbackTab" align="center" label="操作" fixed="right" width="100">
<template slot-scope="scope">
<el-button
type="text"
size="mini"
:disabled="isFeedbackCompleted(scope.row)"
@click="handleEditFeedback(scope.row)"
>反馈</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:page-sizes="[10, 20, 30, 40]"
:page-size="pageSize"
layout="->,total,prev,pager,next,sizes"
:total="total"
:current-page="pageNum"
></el-pagination>
<el-dialog
title="编辑走访反馈"
:visible.sync="feedbackDialogVisible"
width="960px"
custom-class="feedback-dialog"
append-to-body
@close="resetFeedbackForm"
>
<el-form ref="feedbackFormRef" :model="feedbackForm" label-width="100px" class="feedback-form">
<el-form-item label="走访渠道" required>
<el-radio-group v-model="feedbackForm.source">
<el-radio v-for="item in sourceOptions" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="走访备注">
<el-input
v-model="feedbackForm.remark"
type="textarea"
:rows="3"
maxlength="200"
show-word-limit
/>
</el-form-item>
<el-form-item label="客户意愿" required>
<div class="feedback-groups">
<section v-for="type in feedbackTypeOptions" :key="type" class="feedback-group">
<div class="feedback-group__title">{{ type }}</div>
<el-checkbox-group v-model="feedbackForm.feedbackSelections[type]">
<el-checkbox
v-for="product in feedbackProductOptions"
:key="`${type}-${product}`"
:label="product"
>
{{ product }}
</el-checkbox>
</el-checkbox-group>
</section>
</div>
</el-form-item>
<el-form-item label="走访反馈">
<div class="feedback-preview">{{ feedbackPreview || "-" }}</div>
</el-form-item>
</el-form>
<span slot="footer">
<el-button @click="feedbackDialogVisible = false">取消</el-button>
<el-button type="primary" :loading="feedbackSubmitting" @click="handleSubmitFeedback">确定</el-button>
</span>
</el-dialog>
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import { getPADVisitRecord, updatePADVisitFeedback } from "@/api/task/PADvisitRecord.js";
const SOURCE_OPTIONS = [
{ label: "PAD", value: "1" },
{ label: "企业微信", value: "2" },
{ label: "电话", value: "4" }
];
const FEEDBACK_TYPE_OPTIONS = ["拒绝", "考虑", "意愿", "其他", "愿意", "现场办理"];
const FEEDBACK_PRODUCT_OPTIONS = [
"丰收互联",
"贷款",
"电子社保卡签约",
"基金",
"贵金属",
"信用卡",
"医保电子凭证",
"社保卡",
"理财签约"
];
function createEmptyFeedbackSelections() {
return FEEDBACK_TYPE_OPTIONS.reduce((result, item) => {
result[item] = [];
return result;
}, {});
}
export default {
data() {
return {
selectedTab: "0",
tableData: [],
Loading: false,
feedbackDialogVisible: false,
feedbackSubmitting: false,
total: 0,
pageSize: 10,
pageNum: 1,
sourceOptions: SOURCE_OPTIONS,
feedbackTypeOptions: FEEDBACK_TYPE_OPTIONS,
feedbackProductOptions: FEEDBACK_PRODUCT_OPTIONS,
searchForm: {
visName: "",
visId: "",
visTime: "",
custIdc: "",
socialCreditCode: '',
abnormalVisitTag: '',
marketingWay: '',
interRes: ''
},
campsourceList: [],
columns: [
{ key: 0, label: "活动名称", visible: true },
{ key: 1, label: "柜员名称", visible: true },
{ key: 2, label: "柜员号", visible: true },
{ key: 3, label: "柜员部门", visible: true },
{ key: 4, label: "部门名称", visible: true },
{ key: 5, label: "走访客户名称", visible: true },
{ key: 6, label: "客户证件号", visible: true },
{ key: 7, label: "企业(商户)统信码", visible: true },
{ key: 8, label: "客户类型", visible: true },
{ key: 9, label: "签到时间", visible: true },
{ key: 10, label: "签退时间", visible: true },
{ key: 11, label: "签到地址", visible: true },
{ key: 12, label: "签退地址", visible: true },
{ key: 13, label: "签到坐标", visible: true },
{ key: 14, label: "签退坐标", visible: true },
{ key: 15, label: "是否为有效客户", visible: true },
{ key: 16, label: "走访备注", visible: true },
{ key: 17, label: "实地拜访地址", visible: true },
{ key: 18, label: "协同走访客户经理", visible: true },
{ key: 19, label: "事后备注", visible: true },
{ key: 20, label: "走访反馈", visible: true },
{ key: 21, label: "反馈状态", visible: true },
{ key: 22, label: "走访来源", visible: true },
{ key: 23, label: "批量导入文件名", visible: true },
{ key: 24, label: "外呼状态", visible: true },
{ key: 25, label: "客户意愿", visible: true },
{ key: 26, label: "走访渠道", visible: true },
{ key: 27, label: "nlp模型提取", visible: true },
{ key: 28, label: "预授信额度", visible: true }
],
columns875: [
{ key: 29, label: "异常走访标签", visible: true },
{ key: 30, label: "异常走访信息", visible: true },
],
feedbackForm: {
id: null,
source: "",
remark: "",
feedbackSelections: createEmptyFeedbackSelections()
}
};
},
computed: {
...mapGetters(["roles", "userName"]),
deptId() {
return this.$store.state.user.deptId
},
//总行
isHeadAdmin() {
return this.roles.includes("headAdmin");
},
//公司部
isPublic() {
return this.roles.includes("headPublic");
},
//零售部
isPrivate() {
return this.roles.includes("headPrivate");
},
//运管部
isHeadOps() {
return this.roles.includes("headOps");
},
//支行
isBranchAdmin() {
return this.roles.includes("branchAdmin");
},
// 网点主任
isOutletAdmin() {
return this.roles.includes("outletAdmin");
},
// 客户经理
isCommonManager() {
return this.roles.includes("commonManager");
},
// 海宁
is875() {
const deptId = this.deptId === null || this.deptId === undefined ? '' : String(this.deptId)
return deptId.slice(0, 3) === '875'
},
isPersonalFeedbackTab() {
return this.is875 && this.selectedTab === '0'
},
feedbackPreview() {
return this.buildFeedbackValue(this.feedbackForm.feedbackSelections)
}
},
created() {
const {selectedTab} = this.$route.query;
if (selectedTab) {
this.selectedTab = selectedTab;
} else {
// 默认选中第一个tab
const deptId = this.$store.state.user.deptId
const deptIdStr = deptId ? String(deptId) : ''
const defaultTab = deptIdStr.startsWith('875') ? '0' : '2'
if (this.isPublic) {
this.selectedTab = '2'
} else if (this.isPrivate) {
this.selectedTab = defaultTab
} else {
this.selectedTab = defaultTab
}
}
this.initVisitingTaskList();
},
methods: {
resetFeedbackForm() {
this.feedbackSubmitting = false;
this.feedbackForm = {
id: null,
source: "",
remark: "",
feedbackSelections: createEmptyFeedbackSelections()
};
},
parseFeedbackValue(value) {
const feedbackSelections = createEmptyFeedbackSelections();
if (!value) {
return feedbackSelections;
}
value.split(";").forEach((segment) => {
const [type, products] = segment.split(":");
if (!type || !feedbackSelections[type]) {
return;
}
feedbackSelections[type] = (products || "")
.split(",")
.map(item => item && item.trim())
.filter(Boolean);
});
return feedbackSelections;
},
buildFeedbackItems(feedbackSelections) {
return this.feedbackTypeOptions
.map((type) => ({
feedbackType: type,
products: (feedbackSelections[type] || []).filter(Boolean)
}))
.filter(item => item.products.length > 0);
},
buildFeedbackValue(feedbackSelections) {
return this.buildFeedbackItems(feedbackSelections)
.map(item => `${item.feedbackType}:${item.products.join(",")}`)
.join(";");
},
isFeedbackCompleted(row) {
const interRes = row && row.interRes !== null && row.interRes !== undefined ? String(row.interRes).trim() : "";
return interRes === "0";
},
formatSourceLabel(source) {
const sourceValue = source === null || source === undefined ? "" : String(source);
const matched = this.sourceOptions.find(item => item.value === sourceValue);
return matched ? matched.label : (sourceValue || "-");
},
getPersonalViewCustId(row) {
const custId = row && row.custId ? String(row.custId).trim() : "";
if (custId) {
return custId;
}
const custIdc = row && row.custIdc ? String(row.custIdc).trim() : "";
return custIdc ? `101${custIdc}` : "";
},
openPersonalView(row) {
if (!this.isPersonalFeedbackTab) {
this.$message.warning("当前机构暂无个人客户视图跳转权限");
return;
}
const custId = this.getPersonalViewCustId(row);
if (!custId) {
this.$message.warning("未获取到客户标识,暂时无法跳转个人视图");
return;
}
this.$router.push({
path: "/360charts/indexcharts",
query: {
custId,
selectedTab: this.selectedTab,
backUrl: this.$route.path
}
});
},
handleEditFeedback(row) {
if (this.isFeedbackCompleted(row)) {
return;
}
this.feedbackForm = {
id: row.id,
source: row.source === null || row.source === undefined ? "" : String(row.source),
remark: row.remark || "",
feedbackSelections: this.parseFeedbackValue(row.intentionProductValue)
};
this.feedbackDialogVisible = true;
},
handleSubmitFeedback() {
const feedbackItems = this.buildFeedbackItems(this.feedbackForm.feedbackSelections);
if (!this.feedbackForm.source) {
this.$message.warning("请选择走访渠道");
return;
}
if (!feedbackItems.length) {
this.$message.warning("请至少选择一组客户意愿和营销产品");
return;
}
const payload = {
id: this.feedbackForm.id,
source: this.feedbackForm.source || null,
remark: this.feedbackForm.remark || null,
feedbackItems
};
this.feedbackSubmitting = true;
updatePADVisitFeedback(payload).then(() => {
this.$message.success("保存成功");
this.feedbackDialogVisible = false;
this.resetFeedbackForm();
this.initVisitingTaskList();
}).finally(() => {
this.feedbackSubmitting = false;
});
},
handleChange(val) {
this.pageSize = 10;
this.pageNum = 1;
this.initVisitingTaskList();
},
initVisitingTaskList() {
const query = {
custType: this.selectedTab,
visTime: this.searchForm.visTime,
visName: this.searchForm.visName,
visId: this.searchForm.visId,
custIdc: this.searchForm.custIdc,
socialCreditCode: this.searchForm.socialCreditCode,
abnormalVisitTag: this.searchForm.abnormalVisitTag,
marketingWay: this.searchForm.marketingWay,
interRes: this.searchForm.interRes,
pageSize: this.pageSize,
pageNum: this.pageNum,
};
getPADVisitRecord(query).then((res) => {
if (res.code == 200) {
this.tableData = res.rows;
this.total = res.total;
}
});
},
handleRefersh() {
this.searchForm = {
visName: "",
visId: "",
visTime: "",
custIdc: "",
socialCreditCode: '',
abnormalVisitTag: '',
marketingWay: '',
interRes: ''
};
this.initVisitingTaskList();
},
handleSizeChange(newSize) {
this.pageSize = newSize;
this.initVisitingTaskList();
},
handleCurrentChange(newPage) {
this.pageNum = newPage;
this.initVisitingTaskList();
},
handleSearch() {
this.initVisitingTaskList();
},
resetFilters() {
this.searchForm = {
visName: "",
visId: "",
visTime: "",
custIdc: "",
socialCreditCode: '',
abnormalVisitTag: '',
marketingWay: '',
interRes: ''
};
this.initVisitingTaskList();
},
},
};
</script>
<style lang="scss" scoped>
.main {
background-color: #ffffff;
box-shadow: 0 3px 8px 0 #00000017;
border-radius: 16px 16px 0 0;
overflow-y: auto;
padding: 0 30px 30px 30px;
}
.box-card {
height: 181px;
background: #eaf5ff;
border-radius: 8px;
margin-top: 25px;
}
.box-card1 {
height: 181px;
background: #eaf5ff;
border-radius: 8px;
margin-top: 25px;
}
.my-span-checklist-title {
height: 25px;
font-weight: 600;
font-size: 18px;
color: #222222;
letter-spacing: 0.5px;
margin-bottom: 20px;
}
.my-span-checklist-main {
line-height: 30px;
}
.btn-disabled {
::v-deep .el-radio-button__inner {
background-color: #e7e7e7;
}
}
.header-radio {
display: flex;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #ebebeb;
margin-top: 25px;
.btn-disabled {
::v-deep .el-radio-button__inner {
background-color: #e7e7e7;
}
}
.el-radio-button {
flex: 1;
::v-deep .el-radio-button__inner {
width: 100%;
border: none;
font-weight: 400;
letter-spacing: 0.44px;
line-height: 25px;
font-size: 16px;
color: #666666;
padding: 11px 0 12px 0;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
background-color: #4886f8;
font-weight: 400;
color: #ffffff;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
&:nth-child(2) {
&::before,
&::after {
content: "";
position: absolute;
top: 50%;
transform: translateY(-50%);
height: 21px;
width: 1px;
background: #ebebeb;
z-index: 1;
}
&::after {
right: 1px;
}
}
&.is-active {
&::before,
&::after {
content: none;
}
}
}
}
.tableData {
margin-top: 20px;
}
.taskTop {
margin-top: 20px;
display: flex;
justify-content: space-between;
}
.taskTop_left {
display: flex;
}
.taskTop_left_item {
width: 150px;
text-align: center;
height: 40px;
line-height: 40px;
cursor: pointer;
}
.el-icon-arrow-down {
margin-left: 15px;
font-size: 16px;
color: rgb(64, 149, 229);
}
.searchForm {
margin-top: 20px;
.staff-id-filter {
clear: left;
margin-left: 0 !important;
}
}
.operate-cnt {
margin: 0 0 10px 0;
display: flex;
justify-content: space-between;
align-items: flex-end;
.top-right-btn {
margin-right: 24px;
padding-bottom: 6px;
}
.plain-raido-btn {
::v-deep .el-radio-button__inner {
color: #666666;
font-size: 14px;
font-weight: 400;
border: 1px solid #ebebeb;
border-radius: 0;
}
::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
border: 1px solid #4886f8;
color: #4886f8;
background-color: #ffffff;
box-shadow: none;
}
}
}
.feedback-form {
::v-deep .el-form-item.is-required:not(.is-no-asterisk) > .el-form-item__label::before {
color: #f56c6c;
margin-right: 4px;
}
.feedback-groups {
display: flex;
flex-direction: column;
gap: 12px;
}
.feedback-group {
padding: 10px 12px;
border: 1px solid #ebeef5;
border-radius: 8px;
background: #fafbfc;
}
.feedback-group__title {
margin-bottom: 10px;
color: #303133;
font-weight: 600;
}
::v-deep .el-checkbox-group {
display: flex;
flex-wrap: wrap;
gap: 6px 8px;
}
::v-deep .el-checkbox {
margin-right: 0;
min-width: auto;
white-space: nowrap;
}
.feedback-preview {
min-height: 20px;
color: #606266;
word-break: break-all;
}
}
::v-deep .feedback-dialog {
border-radius: 18px;
overflow: hidden;
.el-dialog__header {
padding: 20px 24px 16px;
}
.el-dialog__body {
padding: 12px 24px 20px;
}
.el-dialog__footer {
padding: 10px 24px 20px;
}
}
.quesiton {
color: #b9b9b9;
}
</style>