pengjun 4 days ago
parent
commit
45585da2f7
  1. 4
      src/views/basic-dictionary/ThirdPartyInterfaces.vue
  2. 447
      src/views/customerOrg/BusReservationImport.vue

4
src/views/basic-dictionary/ThirdPartyInterfaces.vue

@ -287,6 +287,10 @@ export default {
.then(res => { .then(res => {
if (res.code > -1) { if (res.code > -1) {
this.thirdInterfaceType = res.data this.thirdInterfaceType = res.data
this.thirdInterfaceType.forEach(e => {
e.id = e.interfaceFlagCode
e.displayName = e.interfaceFlagName
});
} }
}) })
}, },

447
src/views/customerOrg/BusReservationImport.vue

@ -8,8 +8,7 @@
<span class="contenttitleBold">公交预约导入</span> <span class="contenttitleBold">公交预约导入</span>
</div> </div>
</div> </div>
<div
style="
<div style="
margin-bottom: 15px; margin-bottom: 15px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -17,200 +16,36 @@
border-radius: 8px; border-radius: 8px;
padding: 15px; padding: 15px;
margin-top: 7px; margin-top: 7px;
"
>
">
<div></div> <div></div>
<div style="display: flex"> <div style="display: flex">
<div style="padding: 0 5px"> <div style="padding: 0 5px">
<a
:underline="false"
href="/files/公交集团预约人员名单导入模板.xlsx"
><el-button class="commonbutton" size="small"
>下载导入模版</el-button
></a
>
<a :underline="false" href="/files/公交集团预约人员名单导入模板.xlsx"><el-button class="commonbutton"
size="small">下载导入模版</el-button></a>
</div> </div>
<div style="padding: 0 5px"> <div style="padding: 0 5px">
<el-button class="commonbutton" @click="binImpoet" size="small"
>导入</el-button
>
<el-button class="commonbutton" @click="binImpoet" size="small">导入</el-button>
</div> </div>
<div style="padding: 0 5px"> <div style="padding: 0 5px">
<el-button
class="commonbutton"
@click="btnExport('tableData')"
size="small"
style="width: 140px"
>导入后结果状态导出</el-button
>
<el-button class="commonbutton" @click="btnExport('tableData')" size="small"
style="width: 140px">导入后结果状态导出</el-button>
</div> </div>
</div> </div>
</div> </div>
<div
id="tableData"
style="padding: 15px; background-color: #fff; border-radius: 8px"
>
<el-table
:data="tableData"
v-if="mode == '10'"
:row-class-name="importRowClassName"
:height="window.pageHeight < 600 ? 440 : window.pageHeight - 210"
highlight-current-row
size="small"
:summary-method="getSummaries"
show-summary
>
<el-table-column
type="index"
label="序号"
width="40"
align="center"
/>
<el-table-column
prop="importState"
label="导入状态"
min-width="80"
sortable
/>
<el-table-column
prop="importDes"
label="导入描述"
min-width="180"
sortable
/>
<el-table-column
v-for="(item, index) in importCols"
:key="`col${index}`"
:prop="item.dispLabel"
align="center"
:label="item.dataLabel || item.dispLabel"
min-width="100"
/>
</el-table>
<el-table
:data="tableData"
border
v-if="mode == '20'"
:row-class-name="importRowClassName"
:height="window.pageHeight < 600 ? 440 : window.pageHeight - 210"
highlight-current-row
size="small"
:summary-method="getSummaries"
show-summary
>
<el-table-column
type="index"
label="序号"
width="40"
align="center"
/>
<el-table-column
prop="importState"
label="导入状态"
min-width="80"
sortable
/>
<el-table-column
prop="importDes"
label="导入描述"
min-width="180"
sortable
/>
<el-table-column
prop="patientNo"
align="center"
label="档案号"
min-width="80"
/>
<el-table-column
prop="medicalTimes"
align="center"
label="体检次数"
min-width="80"
/>
<el-table-column
prop="patientName"
align="center"
label="姓名"
min-width="80"
/>
<el-table-column
prop="sexId"
align="center"
label="性别"
min-width="40"
>
<template slot-scope="scope">
<div>
{{ dddw(dict.sex, "id", scope.row.sexId, "displayName") }}
</div>
</template>
</el-table-column>
<el-table-column
prop="age"
align="center"
label="年龄"
min-width="40"
/>
<el-table-column
prop="customerOrgParentName"
align="center"
label="单位"
min-width="150"
/>
<el-table-column
prop="customerOrgName"
align="center"
label="部门"
min-width="120"
/>
<el-table-column
prop="telephone"
align="center"
label="电话"
min-width="100"
/>
<el-table-column
prop="mobileTelephone"
align="center"
label="手机"
min-width="100"
/>
<el-table-column
prop="creatorName"
align="center"
label="登记人员"
min-width="80"
/>
<el-table-column
prop="creationTime"
align="center"
label="登记日期"
min-width="80"
>
<template slot-scope="scope">
<div>
{{
scope.row.birthDate
? moment(new Date(scope.row.creationTime)).format(
"yyyy-MM-DD"
)
: ""
}}
</div>
</template>
</el-table-column>
<div id="tableData" style="padding: 15px; background-color: #fff; border-radius: 8px">
<el-table :data="tableData" v-if="mode == '10'" :row-class-name="importRowClassName"
:height="window.pageHeight < 600 ? 440 : window.pageHeight - 210" highlight-current-row size="small"
:summary-method="getSummaries" show-summary>
<el-table-column type="index" label="序号" width="40" align="center" />
<el-table-column prop="importState" label="导入状态" min-width="80" sortable />
<el-table-column prop="importDes" label="导入描述" min-width="180" sortable />
<el-table-column v-for="(item, index) in importCols" :key="`col${index}`" :prop="item.dispLabel"
align="center" :label="item.dataLabel || item.dispLabel" min-width="100" />
</el-table> </el-table>
</div> </div>
</div> </div>
<el-dialog
title="导入EXCEL注意事项"
:visible.sync="dialogGroup.fileReadme"
width="700px"
:show-close="false"
:append-to-body="true"
:close-on-click-modal="false"
>
<el-dialog title="导入EXCEL注意事项" :visible.sync="dialogGroup.fileReadme" width="700px" :show-close="false"
:append-to-body="true" :close-on-click-modal="false">
<div style="height: 400px; padding: 0 20px"> <div style="height: 400px; padding: 0 20px">
<br />导入Excel时Excel的格式必须符合一定规范该格式的模板文件可通过下载模板获取 <br />导入Excel时Excel的格式必须符合一定规范该格式的模板文件可通过下载模板获取
<br />注意事项如下: <br />注意事项如下:
@ -223,87 +58,38 @@
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileReadme', 'fileChoose')"
>下一步</el-button
>
<el-button class="commonbutton" type="primary" @click="nextStep('fileReadme', 'fileChoose')">下一步</el-button>
<el-button class="commonbutton" @click="dialogClose">关闭</el-button> <el-button class="commonbutton" @click="dialogClose">关闭</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
title="选择文件"
:visible.sync="dialogGroup.fileChoose"
width="700px"
:show-close="false"
:append-to-body="true"
:close-on-click-modal="false"
>
<el-dialog title="选择文件" :visible.sync="dialogGroup.fileChoose" width="700px" :show-close="false"
:append-to-body="true" :close-on-click-modal="false">
<div style="height: 400px; padding: 0 50px"> <div style="height: 400px; padding: 0 50px">
<!-- webkitdirectory 选择文件属性 multiple 多选属性--> <!-- webkitdirectory 选择文件属性 multiple 多选属性-->
<div> <div>
<input
id="fileNames"
type="file"
accept=".xlsx,.xls"
@change="changeFileChoose"
@focus="fileGetFocus"
/>
<input id="fileNames" type="file" accept=".xlsx,.xls" @change="changeFileChoose" @focus="fileGetFocus" />
</div> </div>
<div style="margin: 5px 70px; width: 240px"> <div style="margin: 5px 70px; width: 240px">
<el-table
:data="sheetNames"
border
ref="sheetNames"
height="300"
row-click="chooseSheetName"
highlight-current-row
size="small"
>
<el-table-column
prop="sheetName"
label="Excel表单名"
min-width="200"
align="center"
/>
<el-table :data="sheetNames" border ref="sheetNames" height="300" row-click="chooseSheetName"
highlight-current-row size="small">
<el-table-column prop="sheetName" label="Excel表单名" min-width="200" align="center" />
</el-table> </el-table>
</div> </div>
<div style="display: flex; flex-wrap: wrap"> <div style="display: flex; flex-wrap: wrap">
<span style="margin-top: 6px">标题行 </span> <span style="margin-top: 6px">标题行 </span>
<el-input
type="number"
v-model="readDataOpts.titleRow"
size="small"
style="width: 60px; margin: 0 5px"
/>
<el-input type="number" v-model="readDataOpts.titleRow" size="small" style="width: 60px; margin: 0 5px" />
<span style="margin-top: 6px"></span> <span style="margin-top: 6px"></span>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileChoose', 'fileReadme')"
>上一步</el-button
>
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileChoose', 'fileDataOpr')"
>下一步</el-button
>
<el-button class="commonbutton" type="primary" @click="nextStep('fileChoose', 'fileReadme')">上一步</el-button>
<el-button class="commonbutton" type="primary" @click="nextStep('fileChoose', 'fileDataOpr')">下一步</el-button>
<el-button class="commonbutton" @click="dialogClose">关闭</el-button> <el-button class="commonbutton" @click="dialogClose">关闭</el-button>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
title="选择待导入的客户信息"
:visible.sync="dialogGroup.fileDataOpr"
width="700px"
:show-close="false"
:close-on-click-modal="false"
>
<el-dialog title="选择待导入的客户信息" :visible.sync="dialogGroup.fileDataOpr" width="700px" :show-close="false"
:close-on-click-modal="false">
<!--:append-to-body="true" --> <!--:append-to-body="true" -->
<div style="height: 400px"> <div style="height: 400px">
<div style="margin-top: -10px"> <div style="margin-top: -10px">
@ -313,160 +99,70 @@
</div> </div>
<div style="margin: 5px 0px 0px" @contextmenu.prevent=""> <div style="margin: 5px 0px 0px" @contextmenu.prevent="">
<!-- --> <!-- -->
<el-table
:data="excelData"
border
ref="excelData"
height="340"
@row-click="chooseDataImport"
row-key="id"
highlight-current-row
size="small"
:row-class-name="handleRowClassName"
>
<el-table-column
type="index"
align="center"
label="序号"
min-width="40"
/>
<el-table :data="excelData" border ref="excelData" height="340" @row-click="chooseDataImport" row-key="id"
highlight-current-row size="small" :row-class-name="handleRowClassName">
<el-table-column type="index" align="center" label="序号" min-width="40" />
<!-- <!--
<el-table-column prop="choosed" align="center" label="选中" min-width="40"/> <el-table-column prop="choosed" align="center" label="选中" min-width="40"/>
--> -->
<el-table-column
v-for="(item, index) in excelCols"
:key="`col_${index}`"
:prop="item.dispLabel"
align="center"
:label="
(item.val ? '√ ' : '') + (item.dataLabel || item.dispLabel)
"
:min-width="100 + index"
/>
<el-table-column v-for="(item, index) in excelCols" :key="`col_${index}`" :prop="item.dispLabel"
align="center" :label="(item.val ? '√ ' : '') + (item.dataLabel || item.dispLabel)
" :min-width="100 + index" />
</el-table> </el-table>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<div style="display: flex; justify-content: space-between"> <div style="display: flex; justify-content: space-between">
<div style="display: flex"> <div style="display: flex">
<el-button
class="commonbutton"
type="primary"
@click="btnChoose('excelData', 'all')"
>全选</el-button
>
<el-button
class="commonbutton"
type="primary"
@click="btnChoose('excelData')"
>取消全选</el-button
>
<el-button class="commonbutton" type="primary" @click="btnChoose('excelData', 'all')">全选</el-button>
<el-button class="commonbutton" type="primary" @click="btnChoose('excelData')">取消全选</el-button>
</div> </div>
<div style="display: flex"> <div style="display: flex">
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileDataOpr', 'fileChoose')"
>上一步</el-button
>
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileDataOpr', 'fileDataOpts')"
>下一步</el-button
>
<el-button class="commonbutton" @click="dialogClose"
>关闭</el-button
>
<el-button class="commonbutton" type="primary"
@click="nextStep('fileDataOpr', 'fileChoose')">上一步</el-button>
<el-button class="commonbutton" type="primary"
@click="nextStep('fileDataOpr', 'fileDataOpts')">下一步</el-button>
<el-button class="commonbutton" @click="dialogClose">关闭</el-button>
</div> </div>
</div> </div>
</span> </span>
</el-dialog> </el-dialog>
<el-dialog
title="选择单位"
:visible.sync="dialogGroup.fileDataOpts"
width="700px"
:show-close="false"
:close-on-click-modal="false"
>
<el-dialog title="选择单位" :visible.sync="dialogGroup.fileDataOpts" width="700px" :show-close="false"
:close-on-click-modal="false">
<!--:append-to-body="true" --> <!--:append-to-body="true" -->
<div style="display: flex; flex-wrap: wrap; margin-bottom: 40px"> <div style="display: flex; flex-wrap: wrap; margin-bottom: 40px">
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<span>单位分组</span> <span>单位分组</span>
<el-select
v-model="CustomerOrgGroup"
placeholder="单位分组"
style="width: 150px"
size="small"
value-key="id"
>
<el-option
v-for="item in CustomerOrgGroupList"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="CustomerOrgGroup" placeholder="单位分组" style="width: 150px" size="small" value-key="id">
<el-option v-for="item in CustomerOrgGroupList" :key="item.id" :label="item.displayName" :value="item.id" />
</el-select> </el-select>
</div> </div>
<div style="margin-left: 10px; display: flex; align-items: center"> <div style="margin-left: 10px; display: flex; align-items: center">
<span>体检中心</span> <span>体检中心</span>
<el-select
v-model="thirdMedicalCenter"
placeholder="体检中心"
style="width: 150px"
size="small"
value-key="id"
@change="changeThirdMedicalCenter"
>
<el-option
v-for="item in thirdMedicalCenterList"
:key="item.id"
:label="item.displayName"
:value="item.id"
/>
<el-select v-model="thirdMedicalCenter" placeholder="体检中心" style="width: 150px" size="small" value-key="id"
@change="changeThirdMedicalCenter">
<el-option v-for="item in thirdMedicalCenterList" :key="item.id" :label="item.displayName"
:value="item.id" />
</el-select> </el-select>
</div> </div>
<div style="margin-left: 10px; display: flex; align-items: center"> <div style="margin-left: 10px; display: flex; align-items: center">
<span>预约日期</span> <span>预约日期</span>
<el-select
v-model="ThirdMedicalCenterBookingDate"
placeholder="预约日期"
style="width: 150px"
size="small"
value-key="id"
>
<el-option
v-for="item in ThirdMedicalCenterBookingDateList"
:key="item.id"
:label="item.bookingDate"
:value="item.bookingDate"
/>
<el-select v-model="ThirdMedicalCenterBookingDate" placeholder="预约日期" style="width: 150px" size="small"
value-key="id">
<el-option v-for="item in ThirdMedicalCenterBookingDateList" :key="item.id" :label="item.bookingDate"
:value="item.bookingDate" />
</el-select> </el-select>
</div> </div>
</div> </div>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button
class="commonbutton"
type="primary"
@click="nextStep('fileDataOpts', 'fileDataOpr')"
>上一步</el-button
>
<el-button class="commonbutton" type="primary" @click="btnImport"
>确定导入</el-button
>
<el-button class="commonbutton" type="primary" @click="nextStep('fileDataOpts', 'fileDataOpr')">上一步</el-button>
<el-button class="commonbutton" type="primary" @click="btnImport">确定导入</el-button>
<el-button class="commonbutton" @click="dialogClose">关闭</el-button> <el-button class="commonbutton" @click="dialogClose">关闭</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- 通用进度条 --> <!-- 通用进度条 -->
<el-dialog
title="数据处理中……"
:visible.sync="elProgress.display"
width="700px"
height="400"
:show-close="false"
:close-on-click-modal="false"
:append-to-body="true"
>
<el-dialog title="数据处理中……" :visible.sync="elProgress.display" width="700px" height="400" :show-close="false"
:close-on-click-modal="false" :append-to-body="true">
<ElProgressOCX /> <ElProgressOCX />
</el-dialog> </el-dialog>
</div> </div>
@ -519,12 +215,17 @@ export default {
{ dispLabel: "性别", val: "sexName" }, { dispLabel: "性别", val: "sexName" },
{ dispLabel: "年龄", val: "age" }, { dispLabel: "年龄", val: "age" },
{ dispLabel: "电话", val: "phone" }, { dispLabel: "电话", val: "phone" },
{ dispLabel: "分公司", val: "childCompanyName" },
{ dispLabel: "子公司", val: "childCompanyName" },
{ dispLabel: "分公司名称", val: "branchCompany" },
{ dispLabel: "部门", val: "departmentName" }, { dispLabel: "部门", val: "departmentName" },
{ dispLabel: "岗位", val: "positionName" }, { dispLabel: "岗位", val: "positionName" },
{ dispLabel: "岗位名称", val: "position2" },
{ dispLabel: "在职", val: "empStatus" },
{ dispLabel: "婚姻状况", val: "maritalStatus" },
{ dispLabel: "在职", val: "empStatus" }, { dispLabel: "在职", val: "empStatus" },
{ dispLabel: "婚姻状况", val: "maritalStatus" }, { dispLabel: "婚姻状况", val: "maritalStatus" },
], ],
startPoint: -1, // -1 startPoint: -1, // -1
endPoint: -1, // -1 endPoint: -1, // -1
CustomerOrgGroupList: [], CustomerOrgGroupList: [],
@ -533,11 +234,11 @@ export default {
CustomerOrgGroup: "", CustomerOrgGroup: "",
thirdMedicalCenter: "", thirdMedicalCenter: "",
ThirdMedicalCenterBookingDate: "", ThirdMedicalCenterBookingDate: "",
readDataOptsInit:{},
dataImportOptsInit:{}
readDataOptsInit: {},
dataImportOptsInit: {}
}; };
}, },
created(){
created() {
this.readDataOptsInit = Object.assign({}, this.readDataOpts) this.readDataOptsInit = Object.assign({}, this.readDataOpts)
this.dataImportOptsInit = Object.assign({}, this.dataImportOpts) this.dataImportOptsInit = Object.assign({}, this.dataImportOpts)
}, },
@ -651,14 +352,14 @@ export default {
if (d == "fileDataOpr") { if (d == "fileDataOpr") {
ret = this.readData(); ret = this.readData();
} }
if(d=="fileDataOpts"){
if (d == "fileDataOpts") {
let count = 0 let count = 0
this.excelData.forEach(e => { this.excelData.forEach(e => {
if (e.choosed) count++ if (e.choosed) count++
}) })
if(count==0){
if (count == 0) {
this.$message.warning("未选中要导入的记录") this.$message.warning("未选中要导入的记录")
ret=0
ret = 0
} }
} }
if (ret > 0) { if (ret > 0) {
@ -672,7 +373,7 @@ export default {
this.dialogGroup[e] = false this.dialogGroup[e] = false
}) })
let elo = document.getElementById('fileNames') let elo = document.getElementById('fileNames')
if(elo) elo.value = ''; //
if (elo) elo.value = ''; //
this.workBook = null //EXCEL this.workBook = null //EXCEL
this.sheetNames = [] //EXCEL {sheetName:} this.sheetNames = [] //EXCEL {sheetName:}
@ -682,7 +383,7 @@ export default {
this.CustomerOrgGroup = "" this.CustomerOrgGroup = ""
this.thirdMedicalCenter = "" this.thirdMedicalCenter = ""
this.ThirdMedicalCenterBookingDate =""
this.ThirdMedicalCenterBookingDate = ""
this.startPoint = -1 // -1 this.startPoint = -1 // -1
this.endPoint = -1 // -1 this.endPoint = -1 // -1
@ -905,7 +606,7 @@ export default {
((i + 1) * 100) / this.choosedData.length ((i + 1) * 100) / this.choosedData.length
); );
body = this.excelDataToApiBody(this.choosedData[i]); body = this.excelDataToApiBody(this.choosedData[i]);
postapi("/api/app/ThirdBooking/CreateBookingMedicalByExcel",body).then(
postapi("/api/app/ThirdBooking/CreateBookingMedicalByExcel", body).then(
(res) => { (res) => {
if (res.code >= 0) { if (res.code >= 0) {
this.tableData.push(Object.assign({ importState: '导入成功' }, this.choosedData[i])) this.tableData.push(Object.assign({ importState: '导入成功' }, this.choosedData[i]))

Loading…
Cancel
Save