From 5cfc97edd66731e2ebeea36072ec160a25a7bbf3 Mon Sep 17 00:00:00 2001 From: qinxianzhangyao <11053546+qinxianzhangyao@user.noreply.gitee.com> Date: 星期四, 23 十一月 2023 18:21:44 +0800 Subject: [PATCH] qxtj --- src/views/paiban/gerenpaiban/index.vue | 668 +++++++++++++++++++++++++++++++++---------------------- 1 files changed, 400 insertions(+), 268 deletions(-) diff --git a/src/views/paiban/gerenpaiban/index.vue b/src/views/paiban/gerenpaiban/index.vue index de62a93..9cec9fd 100644 --- a/src/views/paiban/gerenpaiban/index.vue +++ b/src/views/paiban/gerenpaiban/index.vue @@ -1,280 +1,412 @@ <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="鍖荤敓濮撳悕" prop="proName"> - <el-input v-model="queryParams.proName" placeholder="璇疯緭鍏ュ尰鐢熷鍚�" clearable @keyup.enter.native="handleQuery" /> - </el-form-item> - <el-form-item label="鐧昏鏃堕棿"> - <el-date-picker clearable v-model="createTimeList" style="width: 240px" value-format="yyyy-MM-dd" - type="daterange" range-separator="-" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" - :picker-options="pickerOptions"></el-date-picker> - </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" icon="el-icon-plus" size="mini" @click="handleAdd" - v-hasPermi="['hosp:rules:add']">鏂板 - </el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="primary" icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" - v-hasPermi="['hosp:rules:edit']">淇敼 - </el-button> - </el-col> - <el-col :span="1.5"> - <el-button type="primary" icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" - v-hasPermi="['hosp:rules:remove']">鍒犻櫎 - </el-button> - </el-col> - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> - </el-row> - - <el-table border v-loading="loading" :data="dataList" @selection-change="handleSelectionChange"> - <el-table-column type="selection" width="55" align="center" /> - <el-table-column label="搴忓彿" align="center" prop="newID" width="55" /> - <el-table-column label="鍖荤敓濮撳悕" align="center" prop="name" /> - <el-table-column label="鎬у埆" align="center" prop="sex" :show-overflow-tooltip="true"> - <template slot-scope="scope"> - <dict-tag :options="dict.type.tj_rule_sex" :value="scope.row.sex" /> - </template> - </el-table-column> - <el-table-column label="鎺掔彮鏃ユ湡" align="center" prop="time" /> - <el-table-column label="鏄熸湡" align="center" prop="week" /> - <el-table-column label="涓婂崍/涓嬪崍" align="center" prop="daty" /> - <el-table-column label="鍑鸿瘖绉戝" align="center" prop="dept" /> - <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="['hosp:rules:edit']" title="淇敼"> - </el-button> - <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" - v-hasPermi="['hosp:rules:remove']" title="鍒犻櫎"> - </el-button> - </template> - </el-table-column> - </el-table> - - <div class="pag"> - <div class="pag1"> - <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" - :limit.sync="queryParams.pageSize" @pagination="getList" /> - </div> - </div> - - <!-- 娣诲姞鎴栦慨鏀硅鍒�+鐥呯瀵硅瘽妗� --> - <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body> - <el-form ref="form" :model="form" :rules="rules" label-width="80px" :inline="true"> - <el-form-item label="鍖荤敓濮撳悕" prop="name"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ュ勾榫�-" style="width:200px" /> + <div class="app-container"> + <el-row :gutter="20"> + <el-col :span="7" :xs="24"> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> + <el-form-item label="绉戝" prop="deptName"> + <el-input v-model="queryParams.deptName" placeholder="璇疯緭鍏ョ瀹�" clearable style="width: 200px" /> </el-form-item> - <el-form-item label="鎬у埆" prop="sex"> - <el-select v-model="form.sex" placeholder="璇烽�夋嫨鎬у埆" style="width:200px"> - <el-option v-for="dict in dict.type.tj_rule_sex" :key="dict.value" :label="dict.label" - :value="dict.value"></el-option> + <el-form-item label="鍖诲笀" prop="userName"> + <el-input v-model="queryParams.userName" placeholder="璇疯緭鍏ュ尰甯�" clearable style="width: 200px" /> + </el-form-item> + <el-form-item label="浜哄憳鍒嗙被" prop="userName"> + <el-select v-model="queryParams.roleId" placeholder="璇疯緭鍏ユ寕鍙风被鍒�" clearable style="width: 160px"> + <el-option v-for="dict in roleList" :key="dict.roleId" :label="dict.roleName" + :value="dict.roleId" /> </el-select> </el-form-item> - <el-form-item label="鎺掔彮鏃ユ湡" prop="time"> - <el-input v-model="form.time" placeholder="璇疯緭鍏ユ帓鐝棩鏈�" style="width:200px" /> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> </el-form-item> - <el-form-item label="鏄熸湡" prop="week"> - <el-input v-model="form.week" placeholder="璇疯緭鍏ユ槦鏈�" style="width:200px" /> - </el-form-item> - <el-form-item label="涓婂崍/涓嬪崍" prop="daty"> - <el-input v-model="form.daty" placeholder="璇疯緭鍏ヤ笂鍗�/涓嬪崍" style="width:200px" /> - </el-form-item> - <el-form-item label="鍑鸿瘖绉戝" prop="dept"> - <el-input v-model="form.dept" placeholder="璇疯緭鍏ュ嚭璇婄瀹�" style="width:200px" /> - </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 { - - } from "@/api/hosp/rules"; - - export default { - name: "Rules", - dicts: ["tj_rule_sex"], - data() { - return { - dataList:[{ - newID:1, - name:"灏忓紶", - sex:"1", - dept:"澶栫", - time:"2023-11-15", - daty:"鍏ㄥぉ", - week:"鏄熸湡浜�" - }], - // 閬僵灞� - loading: true, - // 閫変腑鏁扮粍 - ids: [], - // 闈炲崟涓鐢� - single: true, - // 闈炲涓鐢� - multiple: true, - // 鏄剧ず鎼滅储鏉′欢 - showSearch: true, - // 鎬绘潯鏁� - total: 0, - createTimeList: null, - // 寮瑰嚭灞傛爣棰� - title: "", - // 鏄惁鏄剧ず寮瑰嚭灞� - open: false, - // 鏌ヨ鍙傛暟 - queryParams: { - pageNum: 1, - pageSize: 10, - }, - // 琛ㄥ崟鍙傛暟 - form: {}, - // 琛ㄥ崟鏍¢獙 - rules: { - ageGt: [ - { required: true, message: "椤圭洰鍚嶄笉鑳戒负绌�", trigger: "change" }, - ], - }, - pickerOptions: { - shortcuts: [ - { - text: "杩戜竴鍛�", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "杩戜竴涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); - picker.$emit("pick", [start, end]); - }, - }, - { - text: "杩戜笁涓湀", - onClick(picker) { - const end = new Date(); - const start = new Date(); - start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); - picker.$emit("pick", [start, end]); - }, - }, - ], - }, - }; - }, - watch: { - - - }, - created() { - this.getNowTime(); - this.getList(); - }, - methods: { - //澶勭悊榛樿閫変腑褰撳墠鏃ユ湡 - getNowTime() { - var curDate = new Date().getTime(); - var dayNum = 3 * 24 * 3600 * 1000; - var threeDays = curDate - dayNum; - var sDay = this.getLocalTime(threeDays); - var end = this.getLocalTime(curDate); - this.finishTimeList = [sDay, end]; - }, - add0(m) { - return m < 10 ? "0" + m : m; - }, - getLocalTime(nS) { - var time = new Date(nS); - var y = time.getFullYear(); - var m = time.getMonth() + 1; - var d = time.getDate(); - return y + "-" + this.add0(m) + "-" + this.add0(d); - }, + <el-table border v-loading="loading" ref="tab" :data="timeConfigList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="50" align="center" /> + <el-table-column label="鍖诲笀" align="center" prop="userName" width="120"> + </el-table-column> + <el-table-column label="绉戝" align="center" prop="deptName" width="100" /> + <!-- <el-table-column + label="鑱岀О" + align="center" + prop="cftitle" + width="100" + /> --> + <el-table-column label="鏈�澶ф帓鐝棩鏈�" align="center" prop="time" /> + <el-table-column width="50" label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button size="mini" type="text" icon="el-icon-delete" @click="tingzhen(scope.row)" + v-hasPermi="['mall:timeConfig:remove']" title="鍒犻櫎"> + </el-button> + </template> + </el-table-column> + </el-table> - getList() { - this.loading = false + <div class="pag"> + <div class="pag1"> + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" @pagination="getList" /> + </div> + </div> + </el-col> + <el-col :span="17"> + <el-form :model="form" :rules="rules" ref="queryForm" size="small" :inline="true" label-width="80px"> + <el-form-item label="鎺掔彮绫诲埆" prop="numType"> + <el-select v-model="form.numType" placeholder="璇疯緭鍏ユ寕鍙风被鍒�" clearable style="width: 160px"> + <el-option v-for="dict in dict.type.yuyue_num_type" :key="dict.value" :label="dict.label" + :value="dict.value" /> + </el-select> + </el-form-item> + <el-form-item label="鎺掔彮闄愬彿" prop="allNum"> + <el-input v-model="form.allNum" placeholder="璇疯緭鍏ラ绾﹂檺鍙�" clearable style="width: 160px" /> + </el-form-item> + <el-form-item label="鎺掔彮鏃ユ湡" prop="createTimeList"> + <!-- <el-date-picker v-model="createTimeList" type="datetimerange" align="right" :picker-options="pickerOptions" + style="width: 300px" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" format="yyyy-MM-dd" + value-format="yyyy-MM-dd" @change="dateChangebirthday1"> + </el-date-picker> --> + <el-date-picker v-model="startTime" type="date" placeholder="閫夋嫨鏃ユ湡" :picker-options="pickerOptionsStart" + style="width: 160px"> + </el-date-picker> + <el-date-picker v-model="endTime" type="date" placeholder="閫夋嫨鏃ユ湡" :picker-options="pickerOptionsEnd" + style="width: 160px" @change="dateChangebirthday1"> + </el-date-picker> + </el-form-item> + <el-form-item label="涓婂崍/涓嬪崍"> + <el-radio-group v-model="morA"> + <el-radio :label="1">涓婂崍</el-radio> + <el-radio :label="2">涓嬪崍</el-radio> + <el-radio :label="3">鍏ㄥぉ</el-radio> + </el-radio-group> + </el-form-item> + + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="Scheduling">鐢熸垚鎺掔彮</el-button> + <el-button type="primary" icon="el-icon-search" size="mini" :disabled="disabled" + @click="SaveRoster">淇濆瓨鎺掔彮</el-button> + </el-form-item> + </el-form> + <el-table border v-loading="loading" :data="SchedulingList" height="620"> + <el-table-column type="selection" width="50" align="center" /> + + <el-table-column label="搴忓彿" width="55" align="center" prop="newID" /> + <el-table-column label="鍖诲笀" width="100" align="center" prop="userName" /> + <el-table-column label="鏃ユ湡" align="center" prop="time"> + <template slot-scope="scope"> + <span>{{ parseTime(scope.row.time, "{y}-{m}-{d}") }}</span> + </template> + </el-table-column> + <el-table-column label="鏄熸湡" align="center" prop="week"> + </el-table-column> + <el-table-column label="涓婂崍/涓嬪崍" align="center" prop="morA"> + </el-table-column> + <el-table-column label="鎺掔彮绫诲埆" align="center" prop="numType"> + <template slot-scope="scope"> + <dict-tag :options="dict.type.yuyue_num_type" :value="scope.row.numType" /> + </template> + </el-table-column> + <el-table-column label="鍑鸿瘖绉戝" align="center" prop="deptName" /> + <el-table-column label="鍖诲笀" align="center" prop="userName" /> + <el-table-column label="鎺掔彮闄愬彿" align="center" prop="allNum"> + <template slot-scope="scope"> + <el-input v-model="scope.row.allNum" @change="changeInput" placeholder="璇疯緭鍏ュ唴瀹�" + style="height: 23px; line-height: 23px"></el-input> + </template> + </el-table-column> + <el-table-column width="80" label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" + v-hasPermi="['mall:timeConfig:remove']" title="鍒犻櫎"> + </el-button> + </template> + </el-table-column> + </el-table> + </el-col> + </el-row> + </div> +</template> + +<script> +import { + getUserList, + getScheduling, + timeConfig, + updateIsClose, + roleList +} from "@/api/mall/timeConfig"; + +export default { + name: "TimeConfig", + dicts: ["yuyue_num_type"], + data() { + return { + yc: false, + // pickerOptions: { + // disabledDate: (date) => { + // return date.getTime() < Date.now() - 24 * 60 * 60 * 1000; // 鍙�夋湭鏉ュぉ銆佸彲閫夊綋鍓嶅ぉ銆佷笉鍙�夊巻鍙插ぉ; + // }, + // }, + startTime: "", //寮�濮嬫棩鏈� + pickerOptionsStart: { + disabledDate: (date) => { + let minDate = new Date(this.startTime).getTime(); //鎷垮埌杈撳叆鐨勫紑濮嬫棩鏈� + return ( + date.getTime() < Date.now() - 24 * 60 * 60 * 1000 || + date.getTime() < minDate + ); // 鍙�夋湭鏉ュぉ銆佸彲閫夊綋鍓嶅ぉ銆佷笉鍙�夊巻鍙插ぉ; + }, + // disabledDate: (time) => { + // let maxDate = new Date(this.endTime).getTime()//鎷垮埌杈撳叆鐨勭粨鏉熸棩鏈� + // return time.getTime() > maxDate //鍒ゆ柇澶т簬缁撴潫鏃ユ湡 杩斿洖true 绂佺敤 + // } }, - - - // 鍙栨秷鎸夐挳 - cancel() { - this.open = false; - this.reset(); + endTime: "", //缁撴潫鏃ユ湡 + pickerOptionsEnd: { + disabledDate: (time) => { + let minDate = new Date(this.startTime).getTime(); //鎷垮埌杈撳叆鐨勫紑濮嬫棩鏈� + return ( + time.getTime() < minDate || + time.getTime() < Date.now() - 24 * 60 * 60 * 1000 + ); //鍒ゆ柇灏忎簬寮�濮嬫棩鏈� 杩斿洖true 绂佺敤 + }, }, - // 琛ㄥ崟閲嶇疆 - reset() { - this.form = { - - }; - this.resetForm("form"); + time: "", + disabled: true, + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 棰勭害鏃堕棿琛ㄦ牸鏁版嵁 + timeConfigList: [], + morA: 0, + morAList: [ + { + value: "涓婂崍", + dict: 1 + }, + { + value: "涓嬪崍", + dict: 2 + }, + { + value: "鍏ㄥぉ", + dict: 3 + }, + ], + SchedulingList: [], + // 鏌ヨ鍙傛暟 + queryParams: { + userName: null, + deptName: null, + roleId: null, + pageNum: 1, + pageSize: 10, }, - /** 鎼滅储鎸夐挳鎿嶄綔 */ - handleQuery() { - this.queryParams.pageNum = 1; - this.getList(); + // 琛ㄥ崟鍙傛暟 + form: {}, + dataList: [], + roleList: [], + // 琛ㄥ崟鏍¢獙 + rules: { + startTime: [ + { + required: true, + message: "寮�濮嬫棩鏈熶笉鑳戒负绌�", + trigger: "blur", + }, + ], + endTime: [ + { + required: true, + message: "缁撴潫鏃ユ湡涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + allNum: [ + { + required: true, + message: "鎬绘暟涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + allNum: [ + { + required: true, + message: "棰勭害闄愬彿涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + numType: [ + { + required: true, + message: "鍙风被涓嶈兘涓虹┖", + trigger: "blur", + }, + ], }, - /** 閲嶇疆鎸夐挳鎿嶄綔 */ - resetQuery() { - this.resetForm("queryForm"); - this.handleQuery(); - }, - // 澶氶�夋閫変腑鏁版嵁 - handleSelectionChange(selection) { - this.ids = selection.map((item) => item.aid); - this.single = selection.length !== 1; - this.multiple = !selection.length; - }, - /** 鏂板鎸夐挳鎿嶄綔 */ - handleAdd() { - this.open = true - }, - - /** 淇敼鎸夐挳鎿嶄綔 */ - handleUpdate(row) { - this.open = true - this.form = row - }, - /** 鎻愪氦鎸夐挳 */ - submitForm() { - - }, - /** 鍒犻櫎鎸夐挳鎿嶄綔 */ - handleDelete(row) { - - }, + }; + }, + created() { + this.getList(); + }, + methods: { + dateChangebirthday1(val) { + if (val == null) { + this.endTime = " "; + } else { + let times = new Date(this.endTime).getTime(); + var time = new Date(times); + var y = time.getFullYear(); + var m = time.getMonth() + 1; + var d = time.getDate(); + this.endTime = y + "-" + m + "-" + d; + } }, - }; - </script> - <style scoped> - .pag { - width: 100%; - display: flex; - justify-content: center; - } - - .pag1 { - width: 30%; - } - </style> - \ No newline at end of file + /** 鏌ヨ棰勭害鏃堕棿鍒楄〃 */ + getList() { + this.loading = true; + getUserList().then((response) => { + this.timeConfigList = response.data.voList; + this.total = response.data.total; + this.loading = false; + }); + roleList().then(res => { + this.roleList =res.rows + }) + }, + + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + getUserList(this.queryParams).then((response) => { + this.timeConfigList = response.data.voList; + this.total = response.data.total; + }); + }, + + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.dataList = selection; + this.dataList.forEach((element) => { + if (element.time) { + let date = new Date(element.time).getTime(); + let time = date + 24 * 60 * 60 * 1000; + const dt = new Date(time); + const y = dt.getFullYear(); + const m = (dt.getMonth() + 1 + "").padStart(2, "0"); + const d = (dt.getDate() + "").padStart(2, "0"); + this.startTime = y + "-" + m + "-" + d; + return this.startTime; + } else if (element.time == null) { + this.startTime = ""; + // let date = new Date(this.startTime).getTime(); + let date = Date.now() - 24 * 60 * 60 * 1000; + let time = date + 24 * 60 * 60 * 1000; + const dt = new Date(time); + const y = dt.getFullYear(); + const m = (dt.getMonth() + 1 + "").padStart(2, "0"); + const d = (dt.getDate() + "").padStart(2, "0"); + this.startTime = y + "-" + m + "-" + d; + return this.startTime; + } + }); + this.ids = selection.map((item) => item.id); + }, + + Scheduling() { + if (this.dataList.length >= 1) { + if (this.form.allNum && this.form.numType) { + if (this.endTime) { + // let mallSchedulingTimeDto = { + // allNum: this.form.allNum, + // deptId: this.dataList[0].deptId, + // deptName: this.dataList[0].deptName, + // numType: this.form.numType, + // endTime: this.endTime, + // startTime: this.startTime, + // morA: this.morA, + // userId: this.dataList[0].userId, + // userName: this.dataList[0].userName, + // }; + this.dataList.forEach(item => { + item.allNum=this.form.allNum, + item.numType= this.form.numType, + item.endTime= this.endTime, + item.startTime= this.startTime, + item.morA= this.morA + }) + getScheduling(this.dataList).then((res) => { + this.disabled = false; + this.SchedulingList = res.data; + this.SchedulingList.forEach((item, index) => { + item.newID = + (this.queryParams.pageNum - 1) * this.queryParams.pageSize + + index + + 1; + }); + }); + } else { + this.$modal.msgError("璇烽�夋嫨鏃堕棿娈�"); + } + } else { + this.$modal.msgError("璇峰~鍐欏甫鏄�"); + } + } else { + this.$modal.msgError("璇烽�夋嫨鍖荤敓"); + } + }, + + SaveRoster() { + let mallSchedulingTimes = this.SchedulingList; + timeConfig(mallSchedulingTimes).then((res) => { + if (res.code == 200) { + this.$modal.msgSuccess("淇濆瓨鎴愬姛"); + this.getList(); + } + }); + }, + + changeInput(val) { + console.log(val); + }, + + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + this.SchedulingList.forEach((item, index) => { + if (item == row) { + this.SchedulingList.splice(index, 1); + } + }); + }, + tingzhen(row) { + let MallSchedulingTime = row; + console.log(MallSchedulingTime); + updateIsClose(MallSchedulingTime).then((response) => { + console.log(response); + }); + }, + }, +}; +</script> +<style scoped> +.el-input--medium .el-input__inner { + height: 24px; + line-height: 24px; +} + +.pag { + width: 140%; + display: flex; + justify-content: center; +} + +.pag1 { + width: 20%; +} +</style> \ No newline at end of file -- Gitblit v1.8.0