| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548 |
- <template>
- <el-dialog title="新增值班表"
- :visible.sync="dialogvisible"
- width="80%"
- :before-close="handleCloseAdd">
- <el-form size="mini"
- :model="testlistform"
- :rules="rulestestlistform"
- label-width="100px"
- ref="testlistform">
- <el-row :gutter="20"
- class="donorsaddformcss">
- <el-col :span="8">
- <el-form-item label="学年"
- prop="Year"
- label-width="120px">
- <el-select ref="reftube"
- v-model="testlistform.Year"
- placeholder="请选择学年"
- style="width:100%">
- <el-option v-for="item in years"
- :key="item.value"
- :label="item.label"
- :value="item.value">
- </el-option>
- </el-select>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="学期"
- prop="Term"
- label-width="120px">
- <el-input v-model="testlistform.Term"
- placeholder="请输入"
- style="width:100%"></el-input>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="地点"
- label-width="120px">
- <el-checkbox :indeterminate="isIndeterminate"
- v-model="checkAll"
- @change="handleCheckAllChange">全选</el-checkbox>
- <div style="margin: 15px 0;"></div>
- <el-checkbox-group v-model="checkedCities"
- @change="handleCheckedCitiesChange">
- <el-checkbox v-for="city in cities"
- :label="city"
- :key="city">{{city}}</el-checkbox>
- </el-checkbox-group>
- </el-form-item>
- </el-col>
- <el-col :span="8">
- <el-form-item label="值班人员"
- label-width="120px">
- <el-checkbox v-model="checked1"
- label="张三"
- border></el-checkbox>
- <el-checkbox v-model="checked2"
- label="李四"
- border></el-checkbox>
- </el-form-item>
- </el-col>
- </el-row>
- <template>
- <ag-grid-vue class="table ag-theme-balham"
- style="width: 100%; height: 335px;"
- id="grid1"
- :gridOptions="gridOptions"
- :columnDefs="columnDefs"
- :rowData="rowData"
- @gridReady="onGridReady">
- </ag-grid-vue>
- </template>
- </el-form>
- <span slot="footer">
- <el-button size="mini"
- type="primary"
- @click="savedata()">保存</el-button>
- <el-button size="mini"
- @click="handleCloseAdd">关闭</el-button>
- </span>
- </el-dialog>
- </template>
- <script>
- const cityOptions = ['计算机楼', '主楼', '科技楼'];
- import DutyApi from '@/api/duty'
- import axios from 'axios'
- import { AgGridVue } from 'ag-grid-vue'
- import uploadajax from '@/assets/js/uploadajax.js'
- export default {
- name: 'dutyadd',
- components: { AgGridVue },
- data () {
- return {
- // ag-grid相关变量
- gridOptions: null,
- gridApi: null,
- columnApi: null,
- columnDefs: null,
- defaultColDef: null,
- rowData: [{
- Local: '计算机楼',
- Time: '8:00-10:00',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- },
- {
- Local: '',
- Time: '',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- },
- {
- Local: '',
- Time: '',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- },
- {
- Local: '',
- Time: '',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- },
- {
- Local: '',
- Time: '',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- },
- {
- Local: '',
- Time: '',
- Monday: '',
- Tuesday: '',
- Wednesday: '',
- Thursday: '',
- Friday: '',
- Saturday: '',
- Sunday: ''
- }],
- prenum: '',
- multipleSelection: [],
- //详细list
- tableData: [],
- Local: '',
- Time: '',
- checkedDetail: [],
- checked1: '',
- checked2: '',
- checkAll: false,
- checkedCities: ['上海', '北京'],
- cities: cityOptions,
- isIndeterminate: true,
- years: [],
- form: {
- recentYear: ''
- },
- fileList: [],
- FileUrl: {},
- uploadFile: {},
- dialogvisible: false,
- formtype: '1',
- disabledbarcode: false,
- testlistform: {
- Term: '',
- Year: '',
- Classification: '',
- Responsible: '',
- State: 1,
- Remarks: '',
- CalibrationDeadlineType: 3,
- CalibrationTime: new Date(),
- CalibrationDeadline: 1,
- HeartbeatTime: new Date(),
- TimeNotification: 0,
- MaintenCycle: 1,
- CycleType: 3
- },
- Advancetime: 0,
- triggerlist: {},
- TimeNotification: false, // 有效期提醒
- classificationlist: [],
- getsupplierlist: [],
- rulestestlistform: {
- Code: [{
- required: true,
- message: '请输入设备编码',
- trigger: 'blur'
- }],
- Name: [{
- required: true,
- message: '请输入设备名称',
- trigger: 'blur'
- }]
- }
- }
- },
- beforeMount () {
- this.gridOptions = {
- rowHeight: 32, // 设置行高为32px
- // 缺省列属性
- defaultColDef: {
- width: 200,
- resizable: true,
- editable: true,//单元表格是否可编辑
- },
- // onCellEditingStopped: this.changesq,
- onCellClicked: this.changeClick,
- onRowSelected: this.handleSelectionChange, // 行选中
- onSortChanged: this.handleSortChange // 排序传递后台
- }
- this.columnDefs = [
- {
- headerName: '地点', field: 'Local'
- },
- {
- headerName: '时间段', field: 'Time'
- },
- {
- headerName: '周一', field: 'Monday'
- },
- {
- headerName: '周二', field: 'Tuesday'
- },
- {
- headerName: '周三', field: 'Wednesday'
- },
- {
- headerName: '周四', field: 'Thursday'
- },
- {
- headerName: '周五', field: 'Friday'
- },
- {
- headerName: '周六', field: 'Saturday'
- },
- {
- headerName: '周日', field: 'Sunday'
- }
- ]
- },
- created () {
- this.init()
- },
- mounted () {
- this.gridOptions.context = { page: this }
- this.gridApi = this.gridOptions.api
- this.gridColumnApi = this.gridOptions.columnApi
- this.doRefresh()
- },
- methods: {
- // 表格就绪后后执行
- onGridReady (params) {
- // 调整表格列宽大小自适应
- this.gridApi.sizeColumnsToFit()
- },
- handleSortChange (val) {
- var sortState = this.gridApi.getSortModel()
- // 获取排序的字段
- if (sortState && sortState.length > 0) {
- var item = sortState[0]
- this.sort.prop = item.colId
- this.sort.order = item.sort
- }
- this.doRefresh()
- },
- //单选框选中数据
- handleDetailSelectionChange (selection) {
- if (selection.length > 1) {
- this.$refs.multipleTable.clearSelection();
- this.$refs.multipleTable.toggleRowSelection(selection.pop());
- } else {
- this.checkedDetail = selection;
- }
- },
- // 表格就绪后后执行
- onGridReady (params) {
- this.gridApi = params.api
- this.columnApi = params.columnApi
- // 调整表格列宽大小自适应
- this.gridApi.sizeColumnsToFit()
- },
- // 选择
- changeClick (event) {
- // 判断是否选取的是ABCDEFGH列
- // if (event.colDef.field === 'k') {
- var _this = this
- var rowNode = this.gridOptions.api.getRowNode(event.rowIndex)
- var rows = JSON.parse(JSON.stringify(rowNode.data))
- var headerArr = ['Local', 'Time', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
- headerArr.forEach(function (key, num) {
- if (rows[key]) {
- var evRow = event.rowIndex + 1
- var evNum = num + 1
- var ev = evRow.toString() + evNum.toString()
- var rowsNodeArray = rows[key].split(',')
- // 如果是黄色则变为绿色
- // 黄色
- if (rowsNodeArray.length < 4) {
- if (rowsNodeArray[1] === '0') {
- // 变为绿色
- rowNode.data[key] = rowsNodeArray[0] + ',1,' + rowsNodeArray[2]
- // 加入数组
- _this.tableNum[ev] = event.rowIndex
- _this.tableField[ev] = key
- } else if (rowsNodeArray[1] === '1') {
- // 绿色则改成黄色,并从数组清空数值
- rowNode.data[key] = rowsNodeArray[0] + ',0,' + rowsNodeArray[2]
- _this.tableNum[ev] = ''
- _this.tableField[ev] = ''
- }
- }
- }
- })
- // 刷新表格
- // this.refreshAll()
- // }
- // 获取单元格颜色
- var span = 0
- var nowColor = event.event.toElement.style.backgroundColor
- if (!nowColor) {
- span = 1
- // 点击到了<span>文本上
- nowColor = event.event.toElement.parentElement.style.backgroundColor
- }
- // 判断是否有数据
- if (nowColor !== 'rgb(0, 255, 0)' && nowColor !== 'yellow') {
- // return false
- }
- var evArray = event.value.split(',')
- if (evArray[1] != 0 && evArray[1] != 1 && evArray.length > 3) {
- return false
- }
- if (evArray.length < 4) {
- // 根据颜色存入数组,列值,单元格值
- var evNum = event.rowIndex + 1
- var ev = evNum + event.colDef.headerName
- var eventArray = event.value.split(',')
- if (nowColor === 'rgb(0, 255, 0)') {
- this.nowclick.set(event.rowIndex.toString() + event.colDef.headerName, eventArray[2])
- // event.event.toElement.parentElement.style.backgroundColor = 'yellow'
- this.tableNum[ev] = ''
- this.tableField[ev] = ''
- if (span === 0) {
- event.event.toElement.style.backgroundColor = 'yellow'
- } else {
- event.event.toElement.parentElement.style.backgroundColor = 'yellow'
- }
- // 当点击改变为黄色时候,赋值,0
- event.data[event.colDef.field] = eventArray[0] + ',0,' + eventArray[2]
- } else if (nowColor === 'yellow') {
- this.nowclick.set(event.rowIndex.toString() + event.colDef.headerName, eventArray[2])
- this.tableNum[ev] = event.rowIndex
- this.tableField[ev] = event.colDef.field
- if (span === 0) {
- event.event.toElement.style.backgroundColor = '#00FF00'
- } else {
- event.event.toElement.parentElement.style.backgroundColor = '#FF0000'
- }
- event.data[event.colDef.field] = eventArray[0] + ',1,' + eventArray[2]
- }
- }
- },
- // 获取孔号详情
- getHoleInfoP () {
- let _this = this
- _this.rowData = []
- // 传入后台获取第一板的内容
- let params = {
- boardid: _this.mainBoardForm.Id
- }
- BoardApi.getHolePre(params)
- .then(res => {
- _this.rowData = res
- for (let row of _this.rowData) {
- let headerArr = ['Local', 'Time', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
- headerArr.forEach(function (key, num) {
- let rowarr = row[key].split(',')
- if (row[key] != '' && rowarr.length >= 3) {
- _this.samids.push(rowarr[2])
- }
- })
- }
- this.getIsQuick()
- })
- },
- // 处理列表选择
- handleSelectionChange () {
- let _this = this
- _this.multipleSelection = _this.gridOptions.api.getSelectedRows()
- _this.deleteBtnVisible = !_this.multipleSelection || _this.multipleSelection.length === 0
- if (!_this.deleteBtnVisible) {
- _this.deleteIds = []
- // 赋值删除id列表
- _this.multipleSelection.forEach((item, k) => {
- _this.deleteIds.push(item.Id)
- })
- } else {
- _this.deleteIds = []
- }
- },
- // 列表选择
- handle (row, column, event, cell) {
- console.log(row)
- console.log(column)
- console.log(event)
- console.log(cell)
- },
- // 学校地点多选框
- handleCheckAllChange (val) {
- this.checkedCities = val ? cityOptions : [];
- this.isIndeterminate = false;
- },
- // 学校地点多选框
- handleCheckedCitiesChange (value) {
- let checkedCount = value.length;
- this.checkAll = checkedCount === this.cities.length;
- this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
- },
- init () {
- var myDate = new Date;
- var year = myDate.getFullYear();//获取当前年
- this.initSelectYear(year)
- this.form.recentYear = year;
- },
- initSelectYear (year) {
- this.years = [];
- for (let i = 0; i < 30; i++) {
- this.years.push({ value: (year - i), label: (year - i) + "年" });
- }
- },
- yearChange (value) {
- this.form.recentYear = value
- },
- // 保存新增班级信息
- savedata () {
- DutyApi.addduty(this.testlistform, {})
- .then(res => {
- // response
- this.$emit('closeAddDialog')
- this.dialogvisible = false
- this.fileList = []
- // 刷新
- })
- .catch(err => {
- // handle error
- console.error(err)
- })
- },
- refreshData () {
- this.$emit('refreshData')
- },
- closedialog () {
- this.dialogvisible = false
- },
- handleCloseAdd () {
- this.$refs['testlistform'].resetFields()
- // this.$refs['uploader'].clearFiles()
- this.testlistform.Code = ''
- this.testlistform.Name = ''
- this.testlistform.Brand = ''
- this.testlistform.SupplierId = ''
- this.testlistform.FactoryNum = ''
- this.testlistform.Responsible = ''
- this.testlistform.CalibrationDeadline = 1
- this.testlistform.MaintenCycle = 1
- this.testlistform.Model = ''
- this.testlistform.Remarks = ''
- this.testlistform.Classification = ''
- this.$emit('closeAddDialog')
- },
- // 计算日期
- addDate (date, days) {
- if (days === undefined || days === '') {
- days = 1
- }
- var dates = new Date(date)
- dates.setDate(dates.getDate() + days)
- var month = dates.getMonth() + 1
- var day = dates.getDate()
- var mm = "'" + month + "'"
- var dd = "'" + day + "'"
- // 单位数前面加0
- if (mm.length === 3) {
- month = '0' + month
- }
- if (dd.length === 3) {
- day = '0' + day
- }
- var time = dates.getFullYear() + '-' + month + '-' + day
- return time
- }
- }
- }
- </script>
- <style lang="scss">
- .button {
- padding: 0;
- float: right;
- }
- .donorsaddformcss .el-col-8 {
- height: 58px;
- }
- </style>
|