From 792c28358e2506910078dc1ec4dd4fe1a85b31d8 Mon Sep 17 00:00:00 2001 From: heimawl <1785969728@qq.com> Date: 星期三, 07 六月 2023 16:49:45 +0800 Subject: [PATCH] 完成上传文件各步骤页面及标签管理模块初步搭建 --- src/api/system/tag.js | 44 ++++ src/assets/styles/variables.scss | 2 src/views/system/label/index.vue | 408 +++++++++++++++++++++++++++++++++++++ src/views/patient/patient/index.vue | 175 ++++++++++++--- src/store/modules/settings.js | 2 5 files changed, 596 insertions(+), 35 deletions(-) diff --git a/src/api/system/tag.js b/src/api/system/tag.js new file mode 100644 index 0000000..d7d085e --- /dev/null +++ b/src/api/system/tag.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 鏌ヨ鏍囩鍒楄〃 +export function listTag(query) { + return request({ + url: '/system/tag/list', + method: 'get', + params: query + }) +} + +// 鏌ヨ鏍囩璇︾粏 +export function getTag(tagid) { + return request({ + url: '/system/tag/' + tagid, + method: 'get' + }) +} + +// 鏂板鏍囩 +export function addTag(data) { + return request({ + url: '/system/tag', + method: 'post', + data: data + }) +} + +// 淇敼鏍囩 +export function updateTag(data) { + return request({ + url: '/system/tag', + method: 'put', + data: data + }) +} + +// 鍒犻櫎鏍囩 +export function delTag(tagid) { + return request({ + url: '/system/tag/' + tagid, + method: 'delete' + }) +} diff --git a/src/assets/styles/variables.scss b/src/assets/styles/variables.scss index 6e2ed23..c42e229 100644 --- a/src/assets/styles/variables.scss +++ b/src/assets/styles/variables.scss @@ -3,7 +3,7 @@ $light-blue:#3A71A8; $red:#C03639; $pink: #E65D6E; -$green: #2ef0bf; +$green: #5aecd9; $tiffany: #4AB7BD; $yellow:#FEC171; $panGreen: #30B08F; diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index 16b58d4..55ac682 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -5,7 +5,7 @@ const storageSetting = JSON.parse(localStorage.getItem('layout-setting')) || '' const state = { title: '', - theme: storageSetting.theme || '#2ef0bf', + theme: storageSetting.theme || '#5aecd9', sideTheme: storageSetting.sideTheme || sideTheme, showSettings: showSettings, topNav: storageSetting.topNav === undefined ? topNav : storageSetting.topNav, diff --git a/src/views/patient/patient/index.vue b/src/views/patient/patient/index.vue index 7ca4b28..fd80b99 100644 --- a/src/views/patient/patient/index.vue +++ b/src/views/patient/patient/index.vue @@ -447,41 +447,88 @@ <el-dialog :title="upload.title" :visible.sync="upload.open" - width="400px" + width="70%" append-to-body > - <el-upload - ref="upload" - :limit="1" - accept=".xlsx, .xls" - :headers="upload.headers" - :action="upload.url + '?updateSupport=' + upload.updateSupport" - :disabled="upload.isUploading" - :on-progress="handleFileUploadProgress" - :on-success="handleFileSuccess" - :auto-upload="false" - drag - > - <i class="el-icon-upload"></i> - <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> - <div class="el-upload__tip text-center" slot="tip"> - <div class="el-upload__tip" slot="tip"> - <el-checkbox v-model="upload.updateSupport" /> - 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� + <el-steps :active="dractive" simple> + <el-step title="涓婁紶瀵煎叆鏂囦欢" icon="el-icon-upload"></el-step> + <el-step title="瀵煎叆妫�鏌�" icon="el-icon-picture"></el-step> + <el-step title="瀵煎叆缁撴灉" icon="el-icon-picture"></el-step> + </el-steps> + <!-- 涓婁紶瀵煎叆鏂囦欢 --> + <div class="download" v-if="dractive == 1"> + <el-upload + class="upload-demo" + ref="upload" + :limit="1" + accept=".xlsx, .xls" + :headers="upload.headers" + :action="upload.url + '?updateSupport=' + upload.updateSupport" + :disabled="upload.isUploading" + :on-progress="handleFileUploadProgress" + :on-success="handleFileSuccess" + :auto-upload="false" + drag + > + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + <div class="el-upload__tip text-center" slot="tip"> + <div class="el-upload__tip" slot="tip"> + <el-checkbox v-model="upload.updateSupport" /> + 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹� + </div> + <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> + <el-link + type="primary" + :underline="false" + style="font-size: 24px; vertical-align: baseline" + @click="importTemplate" + >涓嬭浇妯℃澘</el-link + > </div> - <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span> - <el-link - type="primary" - :underline="false" - style="font-size: 12px; vertical-align: baseline" - @click="importTemplate" - >涓嬭浇妯℃澘</el-link - > - </div> - </el-upload> - <div slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button> - <el-button @click="upload.open = false">鍙� 娑�</el-button> + </el-upload> + </div> + <!-- 瀵煎叆妫�鏌� --> + <div class="uploading" v-else-if="dractive == 2"> + <el-table :data="uploadingData" style="width: 100%"> + <el-table-column prop="serial" label="搴忓彿"> </el-table-column> + <el-table-column prop="name" label="濮撳悕"> </el-table-column> + <el-table-column prop="sex" label="鎬у埆"> </el-table-column> + <el-table-column prop="certificate" label="璇佷欢绫诲瀷"> + </el-table-column> + <el-table-column prop="certificatenum" label="璇佷欢鍙风爜"> + </el-table-column> + <el-table-column prop="goday" label="鍑虹敓鏃ユ湡"> </el-table-column> + <el-table-column prop="menum" label="鏈汉鑱旂郴鏂瑰紡"> </el-table-column> + <el-table-column prop="younum" label="浜插睘鑱旂郴鏂瑰紡"> + </el-table-column> + <el-table-column prop="tag" label="鎮h�呮爣绛�"> </el-table-column> + <el-table-column prop="erry" label="閿欒鍘熷洜"> </el-table-column> + </el-table> + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="geterryList" + /> + </div> + <!-- 瀹屾垚 --> + <div class="drexamine" v-else-if="dractive == 3"> + <img + src="https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg" + /> + <p>瀵煎叆鎮h�呮垚鍔燂紒</p> + <p>鏈鍏辫瀵煎叆{{ ImportQuantity }}浣嶆偅鑰�</p> + </div> + + <div slot="footer" class="dialog-footer" v-if="dractive == 3"> + <!-- <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> --> + <el-button @click="submitclose">瀹屾垚</el-button> + </div> + <div slot="footer" v-else> + <el-button type="primary" @click="submitFileForm">涓嬩竴姝�</el-button> + <el-button @click="submitclose">鍙� 娑�</el-button> </div> </el-dialog> </div> @@ -540,6 +587,20 @@ roleOptions: [], // 琛ㄥ崟鍙傛暟 form: {}, + //瀵煎叆杩涘害 + dractive: 1, + // 瀵煎叆灞曠ず琛ㄥ崟 + uploadingData: {}, + total: 0, // 鎬绘潯鏁� + ImportQuantity: 999, //瀵煎叆鎮h�呮暟閲� + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + jobName: undefined, + jobGroup: undefined, + status: undefined, + }, propss: { multiple: true }, optionss: [ { @@ -670,6 +731,15 @@ this.loading = false; } ); + }, + // 鏌ヨ瀵煎叆灞曠ず鍒楄〃 + geterryList() { + this.loading = true; + listJob(this.queryParams).then((response) => { + this.jobList = 1; + this.total = 1; + this.loading = false; + }); }, /** 鏌ヨ閮ㄩ棬涓嬫媺鏍戠粨鏋� */ getDeptTree() { @@ -881,7 +951,17 @@ }, // 鎻愪氦涓婁紶鏂囦欢 submitFileForm() { - this.$refs.upload.submit(); + // 涓婁紶 + if (this.dractive == 1) { + this.$refs.upload.submit(); + this.dractive++; + } else { + this.dractive++; + } + }, + submitclose() { + this.upload.open = false; + this.dractive = 1; }, }, }; @@ -901,4 +981,33 @@ display: flex; justify-content: flex-end; } +.download { + text-align: center; + .el-upload__tip { + font-size: 23px; + } + .el-upload__text { + font-size: 23px; + } +} +.uploading { + margin-top: 20px; + margin: 20px; + padding: 30px; + background: #ffffff; + border: 1px solid #dcdfe6; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.12), + 0 0 6px 0 rgba(0, 0, 0, 0.04); +} +.drexamine { + display: flex; + align-items: center; + justify-content: center; + padding: 30px; + background: #daeaf5; + img { + width: 100px; + height: 100px; + } +} </style> diff --git a/src/views/system/label/index.vue b/src/views/system/label/index.vue new file mode 100644 index 0000000..bb0cbe4 --- /dev/null +++ b/src/views/system/label/index.vue @@ -0,0 +1,408 @@ +<template> + <div class="app-container"> + <el-form + :model="queryParams" + ref="queryForm" + size="small" + :inline="true" + v-show="showSearch" + label-width="68px" + > + <el-form-item label=" 鏍囩鍒嗙被ID " prop="tagcategoryid"> + <el-input + v-model="queryParams.tagcategoryid" + placeholder="璇疯緭鍏� 鏍囩鍒嗙被ID " + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label=" 鏍囩鍚嶇О " prop="tagname"> + <el-input + v-model="queryParams.tagname" + placeholder="璇疯緭鍏� 鏍囩鍚嶇О " + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label=" 鏈烘瀯ID " prop="orgid"> + <el-input + v-model="queryParams.orgid" + placeholder="璇疯緭鍏� 鏈烘瀯ID " + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label=" 涓婁紶鏍囪 " prop="isupload"> + <el-input + v-model="queryParams.isupload" + placeholder="璇疯緭鍏� 涓婁紶鏍囪 " + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime"> + <el-date-picker + clearable + v-model="queryParams.uploadTime" + type="date" + value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 " + > + </el-date-picker> + </el-form-item> + <el-form-item label=" 鏄惁寮�鍚� " prop="isenable"> + <el-input + v-model="queryParams.isenable" + placeholder="璇疯緭鍏� 鏄惁寮�鍚� " + clearable + @keyup.enter.native="handleQuery" + /> + </el-form-item> + <el-form-item> + <el-button + type="primary" + icon="el-icon-search" + size="mini" + @click="handleQuery" + >鎼滅储</el-button + > + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" + >閲嶇疆</el-button + > + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="el-icon-plus" + size="mini" + @click="handleAdd" + v-hasPermi="['system:tag:add']" + >鏂板</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['system:tag:edit']" + >淇敼</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['system:tag:remove']" + >鍒犻櫎</el-button + > + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:tag:export']" + >瀵煎嚭</el-button + > + </el-col> + <right-toolbar + :showSearch.sync="showSearch" + @queryTable="getList" + ></right-toolbar> + </el-row> + + <el-table + v-loading="loading" + :data="tagList" + @selection-change="handleSelectionChange" + > + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label=" 鑷ID " align="center" prop="tagid" /> + <el-table-column + label=" 鏍囩鍒嗙被ID " + align="center" + prop="tagcategoryid" + /> + <el-table-column label=" 鏍囩鍚嶇О " align="center" prop="tagname" /> + <el-table-column + label=" 鏍囩鎻忚堪 " + align="center" + prop="tagdescription" + /> + <el-table-column label=" 鏈烘瀯ID " align="center" prop="orgid" /> + <el-table-column label=" 涓婁紶鏍囪 " align="center" prop="isupload" /> + <el-table-column + label=" 涓婁紶鏃堕棿 " + align="center" + prop="uploadTime" + width="180" + > + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.uploadTime, "{y}-{m}-{d}") }}</span> + </template> + </el-table-column> + <el-table-column label=" 鏄惁寮�鍚� " align="center" prop="isenable" /> + <el-table-column + label="鎿嶄綔" + align="center" + class-name="small-padding fixed-width" + > + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleUpdate(scope.row)" + v-hasPermi="['system:tag:edit']" + >淇敼</el-button + > + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + v-hasPermi="['system:tag:remove']" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total > 0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀规爣绛惧璇濇 --> + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label=" 鏍囩鍒嗙被ID " prop="tagcategoryid"> + <el-input + v-model="form.tagcategoryid" + placeholder="璇疯緭鍏� 鏍囩鍒嗙被ID " + /> + </el-form-item> + <el-form-item label=" 鏍囩鍚嶇О " prop="tagname"> + <el-input v-model="form.tagname" placeholder="璇疯緭鍏� 鏍囩鍚嶇О " /> + </el-form-item> + <el-form-item label=" 鏍囩鎻忚堪 " prop="tagdescription"> + <el-input + v-model="form.tagdescription" + type="textarea" + placeholder="璇疯緭鍏ュ唴瀹�" + /> + </el-form-item> + <el-form-item label=" 鏈烘瀯ID " prop="orgid"> + <el-input v-model="form.orgid" placeholder="璇疯緭鍏� 鏈烘瀯ID " /> + </el-form-item> + <el-form-item label=" 鍒犻櫎鏍囪 " prop="delFlag"> + <el-input v-model="form.delFlag" placeholder="璇疯緭鍏� 鍒犻櫎鏍囪 " /> + </el-form-item> + <el-form-item label=" 涓婁紶鏍囪 " prop="isupload"> + <el-input v-model="form.isupload" placeholder="璇疯緭鍏� 涓婁紶鏍囪 " /> + </el-form-item> + <el-form-item label=" 涓婁紶鏃堕棿 " prop="uploadTime"> + <el-date-picker + clearable + v-model="form.uploadTime" + type="date" + value-format="yyyy-MM-dd" + placeholder="璇烽�夋嫨 涓婁紶鏃堕棿 " + > + </el-date-picker> + </el-form-item> + <el-form-item label=" 鏄惁寮�鍚� " prop="isenable"> + <el-input v-model="form.isenable" placeholder="璇疯緭鍏� 鏄惁寮�鍚� " /> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listTag, getTag, delTag, addTag, updateTag } from "@/api/system/tag"; + +export default { + name: "Tag", + data() { + return { + // 閬僵灞� + loading: false, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 鏍囩琛ㄦ牸鏁版嵁 + tagList: [], + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + open: false, + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + tagcategoryid: null, + tagname: null, + tagdescription: null, + orgid: null, + isupload: null, + uploadTime: null, + isenable: null, + }, + // 琛ㄥ崟鍙傛暟 + form: {}, + // 琛ㄥ崟鏍¢獙 + rules: { + delFlag: [ + { required: true, message: " 鍒犻櫎鏍囪 涓嶈兘涓虹┖", trigger: "blur" }, + ], + isupload: [ + { required: true, message: " 涓婁紶鏍囪 涓嶈兘涓虹┖", trigger: "blur" }, + ], + }, + }; + }, + created() { + this.getList(); + }, + methods: { + /** 鏌ヨ鏍囩鍒楄〃 */ + getList() { + // this.loading = true; + // listTag(this.queryParams).then((response) => { + // this.tagList = response.rows; + // this.total = response.total; + // this.loading = false; + // }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.open = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + tagid: null, + tagcategoryid: null, + tagname: null, + tagdescription: null, + orgid: null, + delFlag: null, + updateBy: null, + updateTime: null, + createBy: null, + createTime: null, + isupload: null, + uploadTime: null, + isenable: null, + }; + this.resetForm("form"); + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map((item) => item.tagid); + this.single = selection.length !== 1; + this.multiple = !selection.length; + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞鏍囩"; + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleUpdate(row) { + this.reset(); + const tagid = row.tagid || this.ids; + // getTag(tagid).then((response) => { + // this.form = response.data; + // this.open = true; + // this.title = "淇敼鏍囩"; + // }); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate((valid) => { + if (valid) { + if (this.form.tagid != null) { + // updateTag(this.form).then((response) => { + // this.$modal.msgSuccess("淇敼鎴愬姛"); + // this.open = false; + // this.getList(); + // }); + } else { + // addTag(this.form).then((response) => { + // this.$modal.msgSuccess("鏂板鎴愬姛"); + // this.open = false; + // this.getList(); + // }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const tagids = row.tagid || this.ids; + this.$modal + .confirm('鏄惁纭鍒犻櫎鏍囩缂栧彿涓�"' + tagids + '"鐨勬暟鎹」锛�') + .then(function () { + // return delTag(tagids); + }) + .then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }) + .catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download( + "system/tag/export", + { + ...this.queryParams, + }, + `tag_${new Date().getTime()}.xlsx` + ); + }, + }, +}; +</script> -- Gitblit v1.9.3