| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380 |
- <template>
- <a-spin :spinning="spinningAdd">
- <div>
- <a-page-header
- style="background-color: #FFFFFF;"
- title="客户资料导入"
- sub-title="1、先选择客户资料,进行导入前预览。2、信息无误后再确认导入"
- @back="goBack"
- >
- <a-descriptions :title="task.taskName" size="small" :column="3">
- <a-descriptions-item label="状态">
- <a-tag :color="task.taskStateColor">{{ task.taskStateText }}</a-tag>
- </a-descriptions-item>
- <a-descriptions-item label="开始时间">{{ task.taskStartTime }}</a-descriptions-item>
- <a-descriptions-item label="结束时间">{{ task.taskEndTime }}</a-descriptions-item>
- <a-descriptions-item label="描述"><span v-html="task.description"></span></a-descriptions-item>
- <!--{{task.description}}-->
- </a-descriptions>
- <a-divider style="margin: 6px;"/>
- </a-page-header>
- <a-card :bordered="false" style="margin-top: -22px;">
- <!-- 操作按钮区域 start -->
- <div class="table-operator">
- <a-upload name="file"
- :showUploadList="false"
- :multiple="false"
- :headers="tokenHeader"
- :action="url.importExcel"
- @change="uploadChange">
- <a-button type="primary" icon="upload">客户资料选择</a-button>
- </a-upload>
- <a-button type="primary" icon="import"
- @click="importInfo">确定导入
- </a-button>
- <a-button type="primary" icon="import"
- @click="downloadTemplat">下载导入模版
- </a-button>
- <a-button type="primary" icon="import"
- @click="handleExportXls('失败数据')">下载失败数据
- </a-button>
- </div>
- <!-- 操作按钮区域 end -->
- <!-- table区域 begin -->
- <div>
- <a-table
- ref="table"
- size="middle"
- bordered
- :scroll="{x:true}"
- :columns="columns"
- :dataSource="dataSource"
- :pagination="false"
- :loading="loading"
- class="j-table-force-nowrap"
- :rowClassName='getRowBackGround'
- @change="handleTableChange">
- </a-table>
- </div>
- <!-- table区域 end -->
- </a-card>
- </div>
- </a-spin>
- </template>
- <script>
- import {JeecgListMixin} from '@/mixins/JeecgListMixin'
- import { downFile, getAction, httpAction, postAction } from '@api/manage'
- export default {
- name: 'TaskImport',
- mixins: [JeecgListMixin],
- data() {
- return {
- //加载属性
- spinningAdd: false,
- description: '导入页面',
- autoSearch: false,
- dataSource: [],
- errorCount: 0,
- task: {},
- // 表头
- columns: [
- {
- title: '#',
- dataIndex: '',
- key: 'rowIndex',
- width: 60,
- align: "center",
- customRender: function (t, r, index) {
- return parseInt(index) + 1;
- }
- },
- {
- title: '客户编号',
- align: "center",
- dataIndex: 'customerNo'
- },
- // {
- // title: '客户名称',
- // align: "center",
- // dataIndex: 'customerName'
- // },
- // {
- // title: '服务号码',
- // align: "center",
- // dataIndex: 'smsNumber'
- // },
- {
- title: '用户编号',
- align: "center",
- dataIndex: 'userNo'
- },
- {
- title: '入网时间',
- align: "center",
- dataIndex: 'networkAccessTime'
- },
- {
- title: '用户状态',
- align: "center",
- dataIndex: 'userState'
- },
- {
- title: '员工姓名',
- align: "center",
- dataIndex: 'staffName'
- },
- {
- title: '员工编号',
- align: "center",
- dataIndex: 'staffNo'
- },
- {
- title: '员工二级部门',
- align: "center",
- dataIndex: 'staffDeptLevel2Name'
- },
- {
- title: '员工二级部门编号',
- align: "center",
- dataIndex: 'staffDeptLevel2No'
- },
- {
- title: '员工三级部门',
- align: "center",
- dataIndex: 'staffDeptLevel3Name'
- },
- {
- title: '员工三级部门编号',
- align: "center",
- dataIndex: 'staffDeptLevel3No'
- },
- {
- title: '导入结果',
- align: "center",
- dataIndex: 'result',
- customRender: function (text, record, index) {
- if (text == "1") {
- return '成功'
- } else if (text == "0") {
- return '失败'
- }
- return '';
- }
- },
- {
- title: '错误结果',
- align: "center",
- dataIndex: 'errorMsg'
- },
- ],
- type:'',
- batchNo:"",
- url: {
- importExcel: window._CONFIG['domainURL'] + "/smsCheck/task/importCustomerExcel",
- importData: "/smsCheck/task/taskId/importCustomerData",
- queryTask: "/smsCheck/task/queryById",
- exportXlsUrl: "/smsCheckError/task/exportXls",
- },
- }
- },
- created() {
- this.task.id = this.$route.query.id;
- this.queryInfoById(this.task.id);
- this.getTask(this.task.id);
- },
- methods: {
- getTask(id){
- var that = this;
- var data = {
- "id": id,
- }
- postAction('/smsTurck/customerData/query/getTaskType', data).then((res) => {
- if (res.success) {
- // Line("1", "行短稽核"),
- // Business("2", "物联网业务稽核"),
- // Reopening("3", "复开审批"),
- // TrunkLineAudit("4", "中继线稽核");
- // that.taskId=res.result.taskId;
- that.type=res.result.type;
- }
- })
- },
- handleExportXls(fileName){
- if(!fileName || typeof fileName != "string"){
- fileName = "导出文件"
- }
- this.getQueryParams.taskId=this.task.id;
- let param = this.getQueryParams;
- if(this.selectedRowKeys && this.selectedRowKeys.length>0){
- param['selections'] = this.selectedRowKeys.join(",")
- }
- param['batchNo']=this.batchNo
- console.log("导出参数",param)
- downFile(this.url.exportXlsUrl,param).then((data)=>{
- if (!data) {
- this.$message.warning("文件下载失败")
- return
- }
- if (typeof window.navigator.msSaveBlob !== 'undefined') {
- window.navigator.msSaveBlob(new Blob([data],{type: 'application/vnd.ms-excel'}), fileName+'.xls')
- }else{
- let url = window.URL.createObjectURL(new Blob([data],{type: 'application/vnd.ms-excel'}))
- let link = document.createElement('a')
- link.style.display = 'none'
- link.href = url
- link.setAttribute('download', fileName+'.xls')
- document.body.appendChild(link)
- link.click()
- document.body.removeChild(link); //下载完成移除元素
- window.URL.revokeObjectURL(url); //释放掉blob对象
- }
- })
- },
- /**下载模版*/
- downloadTemplat(){
- const a = document.createElement('a')
- if (this.type==='2'){
- a.href = '/web/tnc/static/lotExcel.xlsx'
- a.setAttribute('download', '物联网稽核模版.xlsx')
- }
- if (this.type==='1'){
- a.href = '/web/tnc/static/taskModel.xlsx'
- a.setAttribute('download', '行短稽核模版.xlsx')
- }
- //a.href = '/static/taskModel.xlsx'
- a.click();
- a.remove();
- },
- // 返回上一级
- goBack() {
- this.$router.go(-1);
- this.closeCurrent();
- },
- /**
- * 上传事件回调
- *
- * @param result 回调值
- */
- uploadChange(result) {
- let file = result.file;
- let event = result.event;
- if (event === undefined && file.status === 'uploading') {
- this.$message.info('开始上传');
- }
- if (event && file.status === 'uploading') {
- this.$message.info('上传中,请稍等……');
- }
- if (file.response) {
- let success = file.response.success;
- let message = file.response.message;
- if (!success) {
- this.$message.error(message);
- }
- if (file.status === 'done') {
- this.dataSource = file.response.result.data;
- this.errorCount = file.response.result.errorCount;
- if (this.errorCount > 0) {
- this.$message.error('导入含有错误项,请检查内容')
- } else {
- this.$message.info('上传完成');
- }
- }
- }
- },
- /**
- * 导入信息
- */
- importInfo() {
- if (this.dataSource.length === 0) {
- this.$message.error('暂无导入数据,请上传导入文件!');
- return;
- }
- if (this.errorCount !== 0) {
- this.$message.error('包含非法数据,无法导入!');
- return;
- }
- this.$message.info('开始导入,请稍等……');
- this.spinningAdd = true;
- let httpUrl = this.url.importData.replaceAll("taskId", this.task.id);
- let params = this.dataSource;
- let method = 'POST';
- let that = this;
- // 发送请求
- httpAction(httpUrl, params, method)
- .then((res) => {
- if (res.success) {
- that.dataSource = res.result
- if (res.result!==null){
- that.batchNo=res.result[0].batchNo
- }
- that.$message.success(res.message);
- that.$emit('ok');
- that.visible = false;
- } else {
- that.$message.warning(res.message);
- }
- this.spinningAdd = false;
- }).finally(() => {
- that.confirmLoading = false;
- this.spinningAdd = false;
- })
- },
- /**整行换色*/
- getRowBackGround(recordAlarm) {
- switch (recordAlarm.result) {//这里根据条件改变表格背景色
- case "0":
- return "table-color-error"
- }
- },
- getTaskState(taskState) {
- if (taskState === 0) {
- this.task.taskStateColor = '#fadb14';
- this.task.taskStateText = '未开始';
- } else if (taskState === 1) {
- this.task.taskStateColor = '#1890ff';
- this.task.taskStateText = '稽核中';
- } else if (taskState === 2) {
- this.task.taskStateColor = '#52c41a';
- this.task.taskStateText = '稽核完成';
- }
- },
- queryInfoById(id) {
- let url = this.url.queryTask;
- let params = {
- id: id
- }
- let that = this;
- getAction(url, params).then(res => {
- if (res.success) {
- that.task = res.result;
- that.getTaskState(that.task.taskState);
- }
- }).finally(() => {
- })
- },
- }
- }
- </script>
- <style>
- .table-color-error {
- color: rgba(255, 0, 0, 0.82);
- /*background-color: rgba(255, 0, 0, 0.82);*/
- }
- </style>
|