| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div> |
| | | <div class="page-header"> |
| | | <h4><span class="line"></span><span>å¹è®ä¸èæ ¸è®°å½</span></h4> |
| | | <div class="btns"> |
| | | <el-button size="small" type="primary" @click="submitForm" :disabled="![1, 4].includes(currentRow.state)">{{ |
| | | currentRow.assessmentUserId ? 'ä¿å' : 'æäº¤' }}</el-button> |
| | | <el-button size="small" @click="$emit('goBack')">è¿å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="form_title"> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <span class="form_label">课ç¨ç¼å·ï¼</span> |
| | | <span> {{ trainingForm.courseCode }} </span> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <span class="form_label">å¹è®å
容ï¼</span> |
| | | <span> {{ trainingForm.trainingContent }} </span> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <span class="form_label">ç¶æï¼</span> |
| | | <el-tag v-if="trainingForm.state === 1" type="success">已宿</el-tag> |
| | | <el-tag v-if="trainingForm.state === 2" type="warning">è¿è¡ä¸</el-tag> |
| | | <el-tag v-if="trainingForm.state === 3" type="primary">æªå¼å§</el-tag> |
| | | <el-tag v-if="trainingForm.state === 4" type="info">å·²ç»æ</el-tag> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <span class="form_label">å¹è®è®²å¸ï¼</span> |
| | | <span> {{ trainingForm.trainingLecturerId }} </span> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <span class="form_label">å¹è®æ¥æï¼</span> |
| | | <span> {{ trainingForm.trainingDate }} </span> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="margin: 15px 0"> |
| | | <el-form> |
| | | <el-col :span="12"> |
| | | <el-form-item label="èæ ¸æ¹å¼"> |
| | | <el-input v-model="trainingForm.assessmentMethod" |
| | | :disabled="currentRow.state == 1 || currentRow.assessmentUserId" :rows="2" placeholder="请è¾å
¥" |
| | | size="small" style="width: 79%" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="æ¬æ¬¡å¹è®ç»¼åè¯ä»·"> |
| | | <el-input v-model="trainingForm.comprehensiveAssessment" |
| | | :disabled="currentRow.state == 1 || ((currentRow.assessmentUserId !== user.userId) && ![35, 16, 36].includes(user.userId)) || !currentRow.assessmentUserId" |
| | | :rows="2" placeholder="请è¾å
¥" size="small" style="width: 68%" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯ä»·äºº"> |
| | | <el-select v-model="trainingForm.assessmentUserId" |
| | | :disabled="currentRow.state == 1 || currentRow.assessmentUserId" placeholder="è¯·éæ©" size="small" |
| | | style="width: 68%"> |
| | | <el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="è¯ä»·æ¶é´"> |
| | | <el-date-picker v-model="trainingForm.assessmentDate" |
| | | :disabled="currentRow.state == 1 || ((currentRow.assessmentUserId !== user.userId) && ![35, 16, 36].includes(user.userId)) || !currentRow.assessmentUserId" |
| | | style="width:40%" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd" size="small" |
| | | placeholder="éæ©æ¥æ"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="å¹è®æè¦"> |
| | | <el-input v-model="trainingForm.trainingAbstract" |
| | | :disabled="currentRow.state == 1 || currentRow.assessmentUserId" :rows="2" placeholder="请è¾å
¥" |
| | | size="small" style="width: 79%" type="textarea"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item> |
| | | <!-- <el-upload |
| | | ref="upload" |
| | | :action="action" |
| | | :before-upload="beforeUpload" |
| | | :on-error="onError" |
| | | :data="uploadData" |
| | | :headers="uploadHeader" |
| | | :on-success="attachmentUpload" |
| | | > |
| | | <el-button size="small" type="primary">ç¹å»ä¸ä¼ </el-button> |
| | | </el-upload> --> |
| | | <el-button type="primary" size="small" @click="attachmentFrame = true">éä»¶</el-button> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="12" :offset="12"> |
| | | <el-image |
| | | v-if="currentRow.url" |
| | | style="width: 70%; height: 100px" |
| | | :src="javaApi + '/img/' + currentRow.url"> |
| | | </el-image> |
| | | </el-col> --> |
| | | </el-form> |
| | | </el-row> |
| | | </div> |
| | | <!-- æä»¶é¢è§ --> |
| | | <el-dialog :visible.sync="lookDialogVisible" fullscreen title="æ¥çéä»¶" width="800px"> |
| | | <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="previewFile" |
| | | style="height: 90vh;overflow-y: auto;top: 0" /> |
| | | </el-dialog> |
| | | <!-- éä»¶å¼¹æ¡ --> |
| | | <el-dialog title="éä»¶" :visible.sync="attachmentFrame" width="70%" border :before-close="handleClose"> |
| | | <el-upload ref="upload" :action="action" :before-upload="beforeUpload" :on-error="onError" :data="uploadData" |
| | | :headers="uploadHeader" :on-success="attachmentUpload" style="margin-bottom: 10px"> |
| | | <el-button size="small" type="primary" :disabled="currentRow.state == 1">ä¸ä¼ éä»¶</el-button> |
| | | </el-upload> |
| | | <el-table ref="fileData" :data="fileData" height="400px"> |
| | | <el-table-column label="åºå·" type="index" width="100" header-align="center" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="æä»¶åç§°" prop="fileName" header-align="center" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="æä½" fixed="right" width="200px" header-align="center" align="center"> |
| | | <template slot-scope="scope"> |
| | | <el-button type="text" size="small" @click="preview(scope.row)">é¢è§</el-button> |
| | | <el-button type="text" size="small" @click="download(scope.row)">ä¸è½½</el-button> |
| | | <el-button type="text" style="color: red;" size="small" @click="deleteFile(scope.row)">å é¤</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="attachmentFrame = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="attachmentFrame = false">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | |
| | | <el-divider>人å详æ
</el-divider> |
| | | <div> |
| | | <div class="items_center"> |
| | | <span>å§å</span> |
| | | <el-input v-model="userName" class="search" placeholder="请è¾å
¥" size="small"></el-input> |
| | | <el-button size="small" type="primary" @click="getInfo">æ¥è¯¢</el-button> |
| | | </div> |
| | | <div class="items_btn"> |
| | | <el-button :disabled="currentRow.state === 1" size="small" type="primary" @click="addPerson">æ°å¢äººå</el-button> |
| | | <el-button :disabled="currentRow.state === 1" size="small" @click="batchDelete">æ¹éå é¤</el-button> |
| | | </div> |
| | | <el-table :data="trainingTableData" height="calc(100vh - 30em)" stripe style="width: 100%" |
| | | @selection-change="handleSelectionChange"> |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | <el-table-column label="åºå·" type="index" width="60"></el-table-column> |
| | | <el-table-column label="å§å" prop="userName"></el-table-column> |
| | | <el-table-column label="å·¥å·" prop="account"></el-table-column> |
| | | <el-table-column label="è§è²" prop="roleName"></el-table-column> |
| | | <el-table-column label="çµè¯å·ç " prop="phone"></el-table-column> |
| | | <el-table-column label="èæ ¸ç»æ" prop="examinationResults"> |
| | | <template v-slot="scope"> |
| | | <el-select v-model="scope.row.examinationResults" :disabled="currentRow.state === 1" size="small" |
| | | style="width: 100%" @change="updatePersonResult(scope.row)"> |
| | | <el-option label="åæ ¼" value="åæ ¼"></el-option> |
| | | <el-option label="ä¸åæ ¼" value="ä¸åæ ¼"></el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> |
| | | <el-dialog :visible.sync="selectUserDia" title="éæ©ç¨æ·" width="70%"> |
| | | <div class="search" style="margin-bottom: 9px;"> |
| | | <div class="search_thing"> |
| | | <div class="search_label">ç¨æ·åï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="queryParams.name" clearable placeholder="请è¾å
¥" size="small" |
| | | @keyup.enter.native="$refs.ValueTable.selectList()"></el-input> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-if="selectUserDia" class="body" style="height: 60vh;"> |
| | | <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" |
| | | :page="page" @pagination="pagination" :isSelection="true" |
| | | :handleSelectionChange="handleSelectionChange"></lims-table> |
| | | <!-- <ValueTable ref="ValueTable" :componentData="addUserTableInfo" :isSelectedList="isSelectedList" |
| | | :url="$api.user.selectUserList" /> --> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="selectUserDia = false">å æ¶</el-button> |
| | | <el-button type="primary" @click="selectUser">ç¡® å®</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import TableCard from '@/components/TableCard/index.vue'; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | // import ValueTable from '@/components/Table/value-table.vue'; |
| | | import filePreview from "@/components/Preview/filePreview.vue"; |
| | | import { |
| | | fileDownLoad, |
| | | deleteFile, |
| | | getFileData, |
| | | trainingAndAssessmentRecordsPage, |
| | | outOfFocusPreservation, |
| | | newPersonnelAddedToTrainingRecords, |
| | | deleteTrainingAndAssessmentRecords, |
| | | trainingAndAssessmentRecordsAdded, |
| | | selectUserList, |
| | | } from '@/api/cnas/personnel/personnelInfo.js' |
| | | import { selectUserCondition } from "@/api/system/user"; |
| | | import { mapGetters } from "vuex"; |
| | | export default { |
| | | name: 'Edit', |
| | | // import å¼å
¥çç»ä»¶éè¦æ³¨å
¥å°å¯¹è±¡ä¸æè½ä½¿ç¨ |
| | | components: { limsTable, TableCard, filePreview }, |
| | | props: { |
| | | currentRow: { |
| | | type: Object, |
| | | default: () => { |
| | | return {} |
| | | } |
| | | }, |
| | | }, |
| | | data() { |
| | | // è¿éåæ¾æ°æ® |
| | | return { |
| | | previewFile: '', |
| | | lookDialogVisible: false, |
| | | user: {}, |
| | | fileData: [], |
| | | attachmentFrame: false, |
| | | isSelectedList: [], // ç¦ç¨çå¤é |
| | | userName: undefined, |
| | | trainingForm: { |
| | | code: '111111', |
| | | date: '2024-10-10', |
| | | }, |
| | | uploadData: {}, |
| | | trainingColumn: [ |
| | | { |
| | | label: 'å§å', |
| | | prop: 'userName' |
| | | }, |
| | | { |
| | | label: 'å·¥å·', |
| | | prop: 'account' |
| | | }, |
| | | { |
| | | label: 'è§è²', |
| | | prop: 'roleName' |
| | | }, |
| | | { |
| | | label: 'çµè¯å·ç ', |
| | | prop: 'phone' |
| | | }, |
| | | { |
| | | label: 'èæ ¸ç»æ', |
| | | prop: 'result' |
| | | } |
| | | ], |
| | | trainingTableData: [], |
| | | trainingLoading: false, |
| | | selectUserDia: false, // æ·»å 人åå¼¹æ¡ |
| | | addUserTableInfo: { |
| | | name: null, |
| | | entity: { |
| | | departLimsId: '1', |
| | | orderBy: { |
| | | field: 'id', |
| | | order: 'asc' |
| | | } |
| | | }, |
| | | isIndex: true, |
| | | showSelect: true, |
| | | select: true, |
| | | do: [], |
| | | tagField: { |
| | | state: { |
| | | select: [ |
| | | { |
| | | value: 1, |
| | | type: 'success', |
| | | label: 'å¯ç¨' |
| | | }, |
| | | { |
| | | value: 0, |
| | | type: 'danger', |
| | | label: 'åç¨' |
| | | } |
| | | ] |
| | | } |
| | | }, |
| | | selectField: {}, |
| | | upUserDepardLimsIdPower: true |
| | | }, |
| | | multipleSelection: [], |
| | | multipleSelections: [], |
| | | userList: [], |
| | | stateList: [ |
| | | { |
| | | value: 1, |
| | | type: 'success', |
| | | label: 'å¯ç¨' |
| | | }, |
| | | { |
| | | value: 0, |
| | | type: 'danger', |
| | | label: 'åç¨' |
| | | } |
| | | ], |
| | | queryParams: {}, |
| | | tableData: [], |
| | | column: [ |
| | | { label: "å§å", prop: "name" }, |
| | | { label: "è´¦å·", prop: "account" }, |
| | | { |
| | | label: "è§è²", |
| | | prop: "roleName", |
| | | }, |
| | | { |
| | | label: "ç¶æ", prop: "state", dataType: "tag", |
| | | formatData: (params) => { |
| | | let index = this.stateList.findIndex( |
| | | (item) => item.value == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.stateList[index].label; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | formatType: (params) => { |
| | | let index = this.stateList.findIndex( |
| | | (item) => item.value == params |
| | | ); |
| | | if (index > -1) { |
| | | return this.stateList[index].type; |
| | | } else { |
| | | return null; |
| | | } |
| | | }, |
| | | }, |
| | | { label: "çµè¯å·ç ", prop: "phone" }, |
| | | ], |
| | | page: { |
| | | total: 0, |
| | | size: 10, |
| | | current: 0, |
| | | }, |
| | | tableLoading: false, |
| | | }; |
| | | }, |
| | | computed: { |
| | | action() { |
| | | return this.javaApi + '/personTraining/fileUpload'; |
| | | }, |
| | | ...mapGetters(["userId"]), |
| | | }, |
| | | mounted() { |
| | | this.trainingForm = JSON.parse(JSON.stringify(this.currentRow)) |
| | | this.getInfo() |
| | | this.getUserList() |
| | | this.getFileData(this.trainingForm.id) |
| | | // è·åå½åç»å½äººä¿¡æ¯ |
| | | this.loginPerson(); |
| | | }, |
| | | // æ¹æ³éå |
| | | methods: { |
| | | // éä»¶é¢è§ |
| | | preview(row) { |
| | | let folder = ''; |
| | | if (row.fileUrl.includes('xls')) { |
| | | folder = 'excel' |
| | | } else if (row.fileUrl.includes('docx')) { |
| | | folder = 'word' |
| | | } else { |
| | | folder = 'img' |
| | | } |
| | | this.previewFile = this.javaApi + folder + row.fileUrl |
| | | this.$nextTick(() => { |
| | | this.lookDialogVisible = true |
| | | }) |
| | | }, |
| | | // ä¸è½½ |
| | | download(row) { |
| | | fileDownLoad({ id: row.id }).then(res => { |
| | | console.log('2123'); |
| | | const blob = new Blob([res], { type: row.mime }); |
| | | this.$download.saveAs(blob, row.fileName) |
| | | }) |
| | | }, |
| | | |
| | | // å é¤ |
| | | deleteFile(row) { |
| | | this.$confirm('æ¤æä½å°æ°¸ä¹
å é¤è¯¥æä»¶, æ¯å¦ç»§ç»?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | deleteFile({ id: row.id }).then(res => { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: 'å 餿å!' |
| | | }); |
| | | this.getFileData(this.trainingForm.id); |
| | | }) |
| | | }) |
| | | |
| | | }, |
| | | // æ¥è¯¢ |
| | | getFileData(id) { |
| | | getFileData({ detailedId: id }).then(res => { |
| | | this.fileData = res.data |
| | | }) |
| | | }, |
| | | // éä»¶ä¸ä¼ æåçé©å |
| | | attachmentUpload(res, file, fileList) { |
| | | // ç»å¾çè·¯å¾èµå¼ |
| | | this.$message.success('ä¸ä¼ æå') |
| | | this.currentRow.url = res.data.url |
| | | this.$refs.upload.clearFiles(); |
| | | this.getFileData(this.trainingForm.id); |
| | | }, |
| | | // 失败çé©å |
| | | onError(err, file, fileList) { |
| | | this.$message.error('ä¸ä¼ 失败') |
| | | }, |
| | | // ä¸ä¼ åçé©å |
| | | beforeUpload(file) { |
| | | // ç»ä¼ éçåæ°èµå¼ |
| | | this.$set(this.uploadData, "id", this.currentRow.id) |
| | | }, |
| | | // å½åç»å½äººä¿¡æ¯ |
| | | loginPerson() { |
| | | this.user = { |
| | | userId: this.userId |
| | | } |
| | | }, |
| | | // è·åå½åæ°æ® |
| | | async getInfo() { |
| | | this.trainingLoading = true |
| | | trainingAndAssessmentRecordsPage({ |
| | | trainingDetailedId: this.currentRow.id, |
| | | userName: this.userName |
| | | }).then(res => { |
| | | if (res.code === 200) { |
| | | this.trainingTableData = res.data |
| | | } |
| | | this.trainingLoading = false |
| | | }) |
| | | }, |
| | | async updatePersonResult(row) { |
| | | const { code } = await outOfFocusPreservation(row) |
| | | if (code === 200) { |
| | | this.$message.success("æä½æåï¼") |
| | | } |
| | | }, |
| | | getList() { |
| | | this.tableLoading = true; |
| | | let param = { ...this.queryParams, ...this.page }; |
| | | delete param.total; |
| | | selectUserList({ ...param }) |
| | | .then((res) => { |
| | | this.tableLoading = false; |
| | | if (res.code === 200) { |
| | | this.tableData = res.data.records; |
| | | this.page.total = res.data.total; |
| | | } |
| | | }) |
| | | .catch((err) => { |
| | | this.tableLoading = false; |
| | | }); |
| | | }, |
| | | pagination({ page, limit }) { |
| | | this.page.current = page; |
| | | this.page.size = limit; |
| | | this.getList(); |
| | | }, |
| | | handleSelectionChange(val) { |
| | | this.multipleSelections = val |
| | | }, |
| | | addPerson() { |
| | | this.isSelectedList = this.trainingTableData.map(item => item.userId) |
| | | this.getList() |
| | | this.selectUserDia = true; |
| | | }, |
| | | selectUser() { |
| | | let selects = this.multipleSelections; |
| | | if (selects.length == 0) { |
| | | this.$message.error('æªéæ©æ°æ®'); |
| | | return; |
| | | } |
| | | let list = [] |
| | | selects.forEach(a => { |
| | | const obj = { |
| | | courseId: this.currentRow.id, |
| | | examinationResults: "", |
| | | userId: a.id |
| | | } |
| | | list.push(obj) |
| | | // this.trainingTableData.push(obj); |
| | | }); |
| | | newPersonnelAddedToTrainingRecords(list).then(res => { |
| | | this.isSelectedList = [] |
| | | this.selectUserDia = false; |
| | | this.getInfo() |
| | | }) |
| | | }, |
| | | // æ¹éå é¤ |
| | | handleSelectionChange(list) { |
| | | this.multipleSelection = list |
| | | }, |
| | | batchDelete() { |
| | | console.log('æ¹éå é¤', this.multipleSelection) |
| | | if (this.multipleSelection.length > 0) { |
| | | let ids = this.multipleSelection.map(item => item.trainingRecordId) |
| | | this.$confirm('æ¯å¦ç¡®è®¤å é¤æéæ©çæ°æ®?', 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | let formData = new FormData() |
| | | formData.append('ids', ids) |
| | | deleteTrainingAndAssessmentRecords(formData) |
| | | .then(res => { |
| | | if (res.code == 200) { |
| | | this.$message.success('å 餿å'); |
| | | this.getInfo() |
| | | } |
| | | }); |
| | | }).catch(() => { |
| | | this.$message.warning('åæ¶å é¤'); |
| | | }); |
| | | } else { |
| | | this.$message.warning('è¯·éæ©éè¦å é¤çæ°æ®') |
| | | } |
| | | }, |
| | | handleSizeChange(val) { |
| | | this.search.size = val; |
| | | this.getInfo(); |
| | | }, |
| | | handleCurrentChange(val) { |
| | | this.search.current = val; |
| | | this.getInfo(); |
| | | }, |
| | | /** |
| | | * @desc æäº¤è¡¨å |
| | | */ |
| | | async submitForm() { |
| | | console.log('this.currentRow.state', this.currentRow.state); |
| | | if (this.currentRow.state !== 4 && this.currentRow.state !== 1) { |
| | | this.$message.warning("å½åç¶ææ æ³æäº¤/æ¤éï¼") |
| | | return |
| | | } |
| | | // 妿çäº4 è¡¨ç¤ºè¯¥ç¶æä¸ºå·²ç»æï¼1 è¡¨ç¤ºå·²å®æ |
| | | let state = 4 |
| | | if (this.currentRow.assessmentUserId == this.user.userId) { |
| | | state = 1 |
| | | } |
| | | let data = { |
| | | assessmentMethod: this.trainingForm.assessmentMethod, |
| | | comprehensiveAssessment: this.trainingForm.comprehensiveAssessment, |
| | | trainingDetailedId: this.trainingForm.id, |
| | | assessmentUserId: this.currentRow.assessmentUserId ? this.currentRow.assessmentUserId : this.trainingForm.assessmentUserId, |
| | | assessmentDate: this.trainingForm.assessmentDate, |
| | | state: state, |
| | | trainingAbstract: this.trainingForm.trainingAbstract |
| | | } |
| | | const { code } = await trainingAndAssessmentRecordsAdded(data) |
| | | if (code === 200) { |
| | | this.currentRow.state = state |
| | | this.$message.success("æä½æå") |
| | | // this.$emit('refresh',this.currentRow.id) |
| | | } |
| | | }, |
| | | getUserList() { |
| | | selectUserCondition().then(res => { |
| | | if (res.code === 201) { |
| | | return |
| | | } |
| | | this.userList = res.data |
| | | }) |
| | | }, |
| | | handleClose() { |
| | | this.attachmentFrame = false; |
| | | }, |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped> |
| | | .page-header { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 0 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | h4 { |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | |
| | | h4 .line { |
| | | display: inline-block; |
| | | width: 3px; |
| | | height: 16px; |
| | | background: #3A7BFA; |
| | | margin-right: 4px; |
| | | } |
| | | |
| | | .form_title { |
| | | font-size: 14px; |
| | | padding: 0 20px; |
| | | margin-bottom: 10px; |
| | | } |
| | | |
| | | .el-divider { |
| | | margin: 0 1em 1em 0; |
| | | } |
| | | |
| | | .form__input_label { |
| | | width: 90px; |
| | | margin-right: 6px; |
| | | color: #606266; |
| | | } |
| | | |
| | | .form__input_label2 { |
| | | width: 210px; |
| | | margin-right: 6px; |
| | | color: #606266; |
| | | } |
| | | |
| | | .search_thing { |
| | | display: flex; |
| | | align-items: center |
| | | } |
| | | |
| | | .search_label { |
| | | width: 120px; |
| | | } |
| | | |
| | | .pagination { |
| | | display: flex; |
| | | justify-content: space-between |
| | | } |
| | | |
| | | .items_center { |
| | | float: left; |
| | | width: 50%; |
| | | text-align: left; |
| | | } |
| | | |
| | | .items_btn { |
| | | text-align: right; |
| | | width: 50%; |
| | | float: right; |
| | | margin-bottom: 1em; |
| | | } |
| | | |
| | | .search { |
| | | width: 180px; |
| | | padding: 0 16px; |
| | | } |
| | | </style> |