index.vue 61KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353
  1. <template>
  2. <div class="main-contain">
  3. <div class="position">
  4. <bread-crumb :crumbs="crumbs"></bread-crumb>
  5. <div style="display:flex;align-items:center">
  6. <el-button type="primary" @click="DeleteStaffSchedule">清除</el-button>
  7. <el-button type="primary" @click="copyStaffSchedule">复制</el-button>
  8. <el-button type="primary" icon="el-icon-printer" @click="toPrint">打印</el-button>
  9. </div>
  10. </div>
  11. <div class="app-container">
  12. <div class="cell clearfix">
  13. <el-input
  14. size="small"
  15. style="width: 150px;"
  16. class="filter-item"
  17. v-model.trim="keywords"
  18. placeholder="请输入医护人员姓名"
  19. @keyup.enter.native='toSearch'
  20. />
  21. <el-button
  22. size="small"
  23. class="filter-item"
  24. type="primary"
  25. icon="el-icon-search"
  26. @click="toSearch"
  27. >搜索</el-button
  28. >
  29. <el-select style="margin-left:10px;width:150px;" v-model="typeValue" placeholder="请选择" @change="changeOption">
  30. <el-option
  31. v-for="item in options"
  32. :key="item.value"
  33. :label="item.label"
  34. :value="item.value">
  35. </el-option>
  36. </el-select>
  37. <el-button @click="lastclick" type="text" style="margin:0 10px;">&lt;上一周({{ weekNum - 1 }})</el-button>
  38. <div class="dateBox">{{ weekDayArr[0] }}-{{ weekDayArr[6] }}({{ weekNum }})</div>
  39. <el-button @click="nextclick" type="text" style="margin:0 10px;">下一周({{ weekNum + 1 }})&gt;</el-button>
  40. </div>
  41. <div class="schedulingTable" style="display:flex;justify-content: space-between;">
  42. <div style="width: 70%">
  43. <el-table :data="tableData" border :header-cell-style="{backgroundColor: 'rgb(245, 247, 250)', color: '#606266'}" :row-style="{ color: '#303133' }" @cell-click="clickThis" :cell-style="tableCellStyle">
  44. <el-table-column prop="name" label="医护姓名" style="width:16%" align="center">
  45. <template slot-scope="scope">
  46. {{scope.row.user_name}}
  47. </template>
  48. </el-table-column>
  49. <el-table-column :label="'周一\n(' + weekDayArr[0] + ')'" style="width:200px" align="center">
  50. <template slot-scope="scope">
  51. <div @click="hangdleClick(scope.row,scope.$index,0)">
  52. <el-dropdown trigger="click" @command="changeSchedule">
  53. <span class="el-dropdown-link">
  54. {{ getClass(scope.row.user_name,1) }}<i v-if="getTimestamp(weekDayArr[0])>=timeNow && scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  55. </span>
  56. <el-dropdown-menu slot="dropdown" >
  57. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[0])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  58. </el-dropdown-menu>
  59. </el-dropdown>
  60. </div>
  61. </template>
  62. </el-table-column>
  63. <el-table-column prop="name" :label="'周二\n(' + weekDayArr[1] + ')'" style="width:14%" align="center">
  64. <template slot-scope="scope">
  65. <div @click="hangdleClick(scope.row,scope.$index,1)">
  66. <el-dropdown trigger="click" @command="changeSchedule">
  67. <span class="el-dropdown-link">
  68. {{ getClass(scope.row.user_name,2) }}<i v-if="getTimestamp(weekDayArr[1])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  69. </span>
  70. <el-dropdown-menu slot="dropdown" >
  71. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[1])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  72. </el-dropdown-menu>
  73. </el-dropdown>
  74. </div>
  75. </template>
  76. </el-table-column>
  77. <el-table-column prop="name" :label="'周三\n(' + weekDayArr[2] + ')'" style="width:14%" align="center">
  78. <template slot-scope="scope">
  79. <div @click="hangdleClick(scope.row,scope.$index,2)">
  80. <el-dropdown trigger="click" @command="changeSchedule">
  81. <span class="el-dropdown-link">
  82. {{ getClass(scope.row.user_name,3) }}<i v-if="getTimestamp(weekDayArr[2])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  83. </span>
  84. <el-dropdown-menu slot="dropdown" >
  85. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[2])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  86. </el-dropdown-menu>
  87. </el-dropdown>
  88. </div>
  89. </template>
  90. </el-table-column>
  91. <el-table-column prop="name" :label="'周四\n(' + weekDayArr[3] + ')'" style="width:14%" align="center">
  92. <template slot-scope="scope">
  93. <div @click="hangdleClick(scope.row,scope.$index,3)">
  94. <el-dropdown trigger="click" @command="changeSchedule">
  95. <span class="el-dropdown-link">
  96. {{ getClass(scope.row.user_name,4) }}<i v-if="getTimestamp(weekDayArr[3])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  97. </span>
  98. <el-dropdown-menu slot="dropdown" >
  99. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[3])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  100. </el-dropdown-menu>
  101. </el-dropdown>
  102. </div>
  103. </template>
  104. </el-table-column>
  105. <el-table-column prop="name" :label="'周五\n(' + weekDayArr[4] + ')'" style="width:14%" align="center">
  106. <template slot-scope="scope">
  107. <div @click="hangdleClick(scope.row,scope.$index,4)">
  108. <el-dropdown trigger="click" @command="changeSchedule">
  109. <span class="el-dropdown-link">
  110. {{ getClass(scope.row.user_name,5) }}<i v-if="getTimestamp(weekDayArr[4])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  111. </span>
  112. <el-dropdown-menu slot="dropdown" >
  113. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[4])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  114. </el-dropdown-menu>
  115. </el-dropdown>
  116. </div>
  117. </template>
  118. </el-table-column>
  119. <el-table-column prop="name" :label="'周六\n(' + weekDayArr[5] + ')'" style="width:14%" align="center">
  120. <template slot-scope="scope">
  121. <div @click="hangdleClick(scope.row,scope.$index,5)">
  122. <el-dropdown trigger="click" @command="changeSchedule">
  123. <span class="el-dropdown-link">
  124. {{ getClass(scope.row.user_name,6) }}<i v-if="getTimestamp(weekDayArr[5])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  125. </span>
  126. <el-dropdown-menu slot="dropdown" >
  127. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[5])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  128. </el-dropdown-menu>
  129. </el-dropdown>
  130. </div>
  131. </template>
  132. </el-table-column>
  133. <el-table-column prop="name" :label="'周日\n(' + weekDayArr[6] + ')'" style="width:14%" align="center">
  134. <template slot-scope="scope">
  135. <div @click="hangdleClick(scope.row,scope.$index,6)">
  136. <el-dropdown trigger="click" @command="changeSchedule">
  137. <span class="el-dropdown-link">
  138. {{ getClass(scope.row.user_name,0) }}<i v-if="getTimestamp(weekDayArr[6])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  139. </span>
  140. <el-dropdown-menu slot="dropdown" >
  141. <el-dropdown-item :command="item.id" icon="el-icon-plus" :disabled="getTimestamp(weekDayArr[6])<timeNow?true:false" v-for="(item,index) in schedulelist" :key="index">{{item.class_name}}</el-dropdown-item>
  142. </el-dropdown-menu>
  143. </el-dropdown>
  144. </div>
  145. </template>
  146. </el-table-column>
  147. </el-table>
  148. </div>
  149. <div class="classBox">
  150. <div class="classTitle">班种</div>
  151. <div class="classMain">
  152. <div class="classMainBox">
  153. <p v-for="(item,index) in schedulelist" :key="index">
  154. {{item.class_name}}&nbsp;({{item.timeone_start}}~{{item.timeone_type}}{{item.timeone_end}} <span v-if="item.timetwo_start!=''">{{item.timetwo_start}}~{{item.timetwo_type}}{{item.timetwo_end}}</span> )
  155. </p>
  156. </div>
  157. <el-checkbox style="text-align:center;padding-bottom: 10px;" v-model="isChecked" @change="toContinuous">连续排班</el-checkbox>
  158. </div>
  159. </div>
  160. </div>
  161. <el-dialog
  162. title="复制排班"
  163. width="600px"
  164. :visible.sync="newVisible"
  165. >
  166. <el-form :model="form" ref="form" label-width="90px" :rules="rules">
  167. <el-form-item label="复制到 : " required prop="copyWeek">
  168. <el-select v-model="form.copyWeek" placeholder="请选择">
  169. <el-option
  170. v-for="item in typeOptions"
  171. :key="item.value"
  172. :label="item.label"
  173. :value="item.value">
  174. </el-option>
  175. </el-select>
  176. </el-form-item>
  177. </el-form>
  178. <div slot="footer" class="dialog-footer">
  179. <el-button @click="newVisible=false">取 消</el-button>
  180. <el-button type="primary" @click="submitAction('form')">保 存</el-button>
  181. </div>
  182. </el-dialog>
  183. </div>
  184. </div>
  185. </template>
  186. <script>
  187. const moment = require('moment')
  188. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  189. import { getDoctorList,getScheduleList,addSchedule,getStaffScheduleList,getNextWeekList,getScheduleByDoctorId,toSearchScheduleList,DeleteStaffSchedule,copyStaffSchedule,UpdateContinusSchedule } from '@/api/doctorSchedule'
  190. export default {
  191. components:{
  192. BreadCrumb
  193. },
  194. data(){
  195. return{
  196. crumbs: [
  197. { path: false, name: '医护排班' },
  198. { path: '/medicalScheduling/index', name: '医护排班' }
  199. ],
  200. keywords:'',
  201. options: [{
  202. value: '0',
  203. label: '全部'
  204. }, {
  205. value: '2',
  206. label: '医生'
  207. }, {
  208. value: '3',
  209. label: '护士'
  210. }],
  211. typeValue:'0',
  212. tableData: [],
  213. isChecked:true,
  214. schedulelist:[],
  215. weekNum:'',
  216. weekDayArr:[],
  217. todayDate:'',
  218. clen:7,
  219. nowYear: new Date().getFullYear(),
  220. schedule_week:0,
  221. docobj:{},
  222. class_name:"",
  223. doctorlist:[],
  224. schedule_date:"",
  225. newVisible:false,
  226. typeOptions:[],
  227. timeOptions:[],
  228. copyWeek:'',
  229. weekList: [],
  230. currentFirstDate1: '',
  231. form:{
  232. copyWeek:"",
  233. },
  234. rules: {
  235. copyWeek: [{ required: true, message: "请选择复制时间段", trigger: "blur" }],
  236. },
  237. timeNow:0,
  238. arrZero:[],
  239. arrOne:[],
  240. arrTwo:[],
  241. arrThree:[],
  242. arrFour:[],
  243. arrFive:[],
  244. arrSix:[],
  245. arrSeven:[],
  246. }
  247. },
  248. methods:{
  249. search(){},
  250. toPrint(){
  251. this.$router.push({
  252. path: '/medicalScheduling/schedule/print?starttime='+this.getTimestamp(this.weekDayArr[0])+"&endtime="+this.getTimestamp(this.weekDayArr[6])+"&weekArr="+ this.weekDayArr+'&typeValue='+this.typeValue,
  253. })
  254. },
  255. getDoctorList(){
  256. getDoctorList().then(response=>{
  257. if(response.data.state == 1){
  258. var list = response.data.data.list
  259. // console.log("医护列表",list)
  260. this.tableData = list
  261. this.doctorlist = list
  262. //获取班种列表
  263. this.getStaffScheduleList()
  264. }
  265. })
  266. },
  267. getScheduleList(){
  268. getScheduleList().then(response=>{
  269. if(response.data.state == 1){
  270. var schedulelist = response.data.data.scheduleList
  271. // console.log("schedulelist",schedulelist)
  272. for(let i=0;i<schedulelist.length;i++){
  273. if(schedulelist[i].timeone_type == 1){
  274. schedulelist[i].timeone_type = "当日"
  275. }
  276. if(schedulelist[i].timeone_type == 2){
  277. schedulelist[i].timeone_type = "次日"
  278. }
  279. if(schedulelist[i].timetwo_type == 1){
  280. schedulelist[i].timetwo_type = "当日"
  281. }
  282. if(schedulelist[i].timetwo_type == 2){
  283. schedulelist[i].timetwo_type = "次日"
  284. }
  285. }
  286. this.schedulelist = schedulelist
  287. }
  288. })
  289. },
  290. hangdleClick(val,index,num){
  291. // console.log("val",val)
  292. this.docobj = val
  293. if(this.getTimestamp(this.weekDayArr[num]) < this.timeNow){
  294. this.$message.error("过去日期不可以编辑")
  295. return
  296. }
  297. },
  298. clickThis(row, column, cell, event){
  299. var week = (column.label).split('');
  300. var weeks = week[0]+week[1]
  301. if(weeks == "周日"){
  302. this.schedule_week = 0
  303. this.schedule_date = this.weekDayArr[6]
  304. }
  305. if(weeks == "周一"){
  306. this.schedule_week = 1
  307. this.schedule_date = this.weekDayArr[0]
  308. }
  309. if(weeks=="周二"){
  310. this.schedule_week = 2
  311. this.schedule_date = this.weekDayArr[1]
  312. }
  313. if(weeks=="周三"){
  314. this.schedule_week = 3
  315. this.schedule_date = this.weekDayArr[2]
  316. }
  317. if(weeks=="周四"){
  318. this.schedule_week = 4
  319. this.schedule_date = this.weekDayArr[3]
  320. }
  321. if(weeks == "周五"){
  322. this.schedule_week = 5
  323. this.schedule_date = this.weekDayArr[4]
  324. }
  325. if(weeks== "周六"){
  326. this.schedule_week = 6
  327. this.schedule_date = this.weekDayArr[5]
  328. }
  329. },
  330. changeSchedule(id){
  331. var class_name = ""
  332. for(let i=0;i<this.schedulelist.length;i++){
  333. if(id == this.schedulelist[i].id){
  334. class_name = this.schedulelist[i].class_name
  335. }
  336. }
  337. let arr = [...this.tableData]
  338. // console.log("arr===",arr)
  339. for(let i=0;i<arr.length;i++){
  340. if(this.docobj.id == arr[i].id){
  341. arr[i].class_name = class_name
  342. arr[i].class_index = this.schedule_week
  343. }
  344. }
  345. // console.log("arr",arr)
  346. this.tableData = arr
  347. const params = {
  348. doctor_id:this.docobj.admin_user_id,
  349. doctor_type:this.docobj.user_type,
  350. schedule_type:id,
  351. schedule_week:this.schedule_week,
  352. start_time:this.getTimestamp(this.weekDayArr[0]),
  353. end_time:this.getTimestamp(this.weekDayArr[6]),
  354. schedule_date:this.getTimestamp(this.schedule_date)
  355. }
  356. // console.log("params",params)
  357. addSchedule(params).then(response=>{
  358. if(response.data.state == 1){
  359. var schedule = response.data.data.schedule
  360. // console.log("schedule",schedule)
  361. this.$message.success("保存成功")
  362. this.getStaffScheduleList()
  363. }
  364. })
  365. },
  366. formatDate(date){
  367. var year = date.getFullYear()+'.'
  368. var month = (date.getMonth()+1)+'.';
  369. var day = date.getDate();
  370. return year+month+day
  371. },
  372. formatDateTwo(date){
  373. var year = date.getFullYear()+'.'
  374. var month = (date.getMonth()+1)+'.';
  375. var day = date.getDate();
  376. return year+month+day
  377. },
  378. addDate(date,n){
  379. date.setDate(date.getDate()+n);
  380. return date;
  381. },
  382. //
  383. setDate(date){
  384. var week = date.getDay()-1;
  385. date = this.addDate(date,week*-1);
  386. this.currentFirstDate = new Date(date);
  387. this.currentDate = new Date(date)
  388. for(var i = 0;i<this.clen; i++){
  389. this.weekDayArr.push(this.formatDate(i==0 ? date : this.addDate(date,1)))
  390. }
  391. },
  392. //上一周
  393. lastclick(){
  394. this.weekDayArr=[]
  395. this.setDate(this.addDate(this.currentFirstDate,-7));
  396. if (this.weekNum == 1) {
  397. let year = this.nowYear - 1
  398. let month = 12
  399. let date = 31
  400. this.weekNum = this.getYearWeek(year, month, date)
  401. this.nowYear = this.nowYear - 1
  402. }
  403. this.weekNum = this.weekNum - 1
  404. this.getNextWeekList()
  405. },
  406. //下一周
  407. nextclick(){
  408. this.weekDayArr=[]
  409. this.setDate(this.addDate(this.currentFirstDate,7));
  410. this.weekNum = this.weekNum + 1
  411. if (this.weekNum == 53) {
  412. let year = this.nowYear + 1
  413. let month = 1
  414. let date = 1
  415. this.weekNum = this.getYearWeek(year, month, date)
  416. this.nowYear = this.nowYear + 1
  417. }
  418. this.getNextWeekList()
  419. },
  420. getYearWeek(year,month,date){
  421. /*
  422. dateNow是当前日期
  423. dateFirst是当年第一天
  424. dataNumber是当前日期是今年第多少天
  425. 用dataNumber + 当前年的第一天的周差距的和在除以7就是本年第几周
  426. */
  427. let dateNow = new Date(year, parseInt(month) - 1, date);
  428. let dateFirst = new Date(year, 0, 1);
  429. let dataNumber = Math.round((dateNow.valueOf() - dateFirst.valueOf()) / 86400000);
  430. return Math.ceil((dataNumber + ((dateFirst.getDay() + 1) - 1)) / 7);
  431. },
  432. getTimestamp(time) { //把时间日期转成时间戳
  433. return (new Date(time)).getTime() / 1000
  434. },
  435. beforeHandleCommand(item,row){
  436. return {
  437. 'command': item,
  438. 'row': row
  439. }
  440. },
  441. //获取所有医护排班数据
  442. getStaffScheduleList(){
  443. const params = {
  444. start_time:this.getTimestamp(this.weekDayArr[0]),
  445. end_time:this.getTimestamp(this.weekDayArr[6])
  446. }
  447. getStaffScheduleList(params).then(response=>{
  448. if(response.data.state == 1){
  449. var staffList = response.data.data.staffList
  450. console.log("stafflist",staffList)
  451. var sevenStr = ""
  452. var oneStr = ""
  453. var twoStr = ""
  454. var threeStr = ""
  455. var fourStr = ""
  456. var fiveStr = ""
  457. var sixStr = ""
  458. for(let i=0;i<staffList.length;i++){
  459. if(staffList[i].schedule_week == 0){
  460. staffList[i].class_index = 0
  461. var arr = []
  462. this.arrZero.push(staffList[i].class_name)
  463. for(let i=0;i<this.arrZero.length;i++){
  464. if(this.arrZero[i]!=''){
  465. arr.push(this.arrZero[i])
  466. }
  467. }
  468. var countedNames = arr.reduce(function (allNames, name) {
  469. if (name in allNames) {
  470. allNames[name]++;
  471. }
  472. else {
  473. allNames[name] = 1;
  474. }
  475. return allNames;
  476. }, {});
  477. let objKey = Object.keys(countedNames)
  478. let objVal = Object.values(countedNames)
  479. var zeroStr = ''
  480. objKey.map((item,index) => {
  481. let objVal = Object.values(countedNames)
  482. zeroStr += item + objVal[index] + '\n'
  483. })
  484. sevenStr = zeroStr
  485. }
  486. if(staffList[i].schedule_week == 1){
  487. staffList[i].class_index = 1
  488. var arr = []
  489. this.arrOne.push(staffList[i].class_name)
  490. for(let i=0;i<this.arrOne.length;i++){
  491. if(this.arrOne[i]!=''){
  492. arr.push(this.arrOne[i])
  493. }
  494. }
  495. var countedNames = arr.reduce(function (allNames, name) {
  496. if (name in allNames) {
  497. allNames[name]++;
  498. }
  499. else {
  500. allNames[name] = 1;
  501. }
  502. return allNames;
  503. }, {});
  504. let objKey = Object.keys(countedNames)
  505. let objVal = Object.values(countedNames)
  506. let strOne = ''
  507. objKey.map((item,index) => {
  508. let objVal = Object.values(countedNames)
  509. strOne += item + objVal[index] + '\n'
  510. })
  511. oneStr = strOne
  512. }
  513. if(staffList[i].schedule_week == 2){
  514. staffList[i].class_index = 2
  515. var arr = []
  516. this.arrTwo.push(staffList[i].class_name)
  517. for(let i=0;i<this.arrTwo.length;i++){
  518. if(this.arrTwo[i]!=''){
  519. arr.push(this.arrTwo[i])
  520. }
  521. }
  522. var countedNames = arr.reduce(function (allNames, name) {
  523. if (name in allNames) {
  524. allNames[name]++;
  525. }
  526. else {
  527. allNames[name] = 1;
  528. }
  529. return allNames;
  530. }, {});
  531. let objKey = Object.keys(countedNames)
  532. let objVal = Object.values(countedNames)
  533. let strTwo = ''
  534. objKey.map((item,index) => {
  535. let objVal = Object.values(countedNames)
  536. strTwo += item + objVal[index] + '\n'
  537. })
  538. twoStr = strTwo
  539. }
  540. if(staffList[i].schedule_week == 3){
  541. staffList[i].class_index = 3
  542. var arr = []
  543. this.arrThree.push(staffList[i].class_name)
  544. for(let i=0;i<this.arrThree.length;i++){
  545. if(this.arrThree[i]!=''){
  546. arr.push(this.arrThree[i])
  547. }
  548. }
  549. var countedNames = arr.reduce(function (allNames, name) {
  550. if (name in allNames) {
  551. allNames[name]++;
  552. }
  553. else {
  554. allNames[name] = 1;
  555. }
  556. return allNames;
  557. }, {});
  558. let objKey = Object.keys(countedNames)
  559. let objVal = Object.values(countedNames)
  560. let strThree = ''
  561. objKey.map((item,index) => {
  562. let objVal = Object.values(countedNames)
  563. strThree += item + objVal[index] + '\n'
  564. })
  565. threeStr = strThree
  566. }
  567. if(staffList[i].schedule_week == 4){
  568. staffList[i].class_index = 4
  569. var arr = []
  570. this.arrFour.push(staffList[i].class_name)
  571. for(let i=0;i<this.arrFour.length;i++){
  572. if(this.arrFour[i]!=''){
  573. arr.push(this.arrFour[i])
  574. }
  575. }
  576. var countedNames = arr.reduce(function (allNames, name) {
  577. if (name in allNames) {
  578. allNames[name]++;
  579. }
  580. else {
  581. allNames[name] = 1;
  582. }
  583. return allNames;
  584. }, {});
  585. let objKey = Object.keys(countedNames)
  586. let objVal = Object.values(countedNames)
  587. let strFour = ''
  588. objKey.map((item,index) => {
  589. let objVal = Object.values(countedNames)
  590. strFour += item + objVal[index] + '\n'
  591. })
  592. fourStr = strFour
  593. }
  594. if(staffList[i].schedule_week == 5){
  595. staffList[i].class_index = 5
  596. var arr = []
  597. this.arrFive.push(staffList[i].class_name)
  598. for(let i=0;i<this.arrFive.length;i++){
  599. if(this.arrFive[i]!=''){
  600. arr.push(this.arrFive[i])
  601. }
  602. }
  603. var countedNames = arr.reduce(function (allNames, name) {
  604. if (name in allNames) {
  605. allNames[name]++;
  606. }
  607. else {
  608. allNames[name] = 1;
  609. }
  610. return allNames;
  611. }, {});
  612. let objKey = Object.keys(countedNames)
  613. let objVal = Object.values(countedNames)
  614. let strFive = ''
  615. objKey.map((item,index) => {
  616. let objVal = Object.values(countedNames)
  617. strFive += item + objVal[index] + '\n'
  618. })
  619. fiveStr = strFive
  620. }
  621. if(staffList[i].schedule_week == 6){
  622. staffList[i].class_index = 6
  623. var arr = []
  624. this.arrSix.push(staffList[i].class_name)
  625. for(let i=0;i<this.arrSix.length;i++){
  626. if(this.arrSix[i]!=''){
  627. arr.push(this.arrSix[i])
  628. }
  629. }
  630. var countedNames = arr.reduce(function (allNames, name) {
  631. if (name in allNames) {
  632. allNames[name]++;
  633. }
  634. else {
  635. allNames[name] = 1;
  636. }
  637. return allNames;
  638. }, {});
  639. let objKey = Object.keys(countedNames)
  640. let objVal = Object.values(countedNames)
  641. let strSix = ''
  642. objKey.map((item,index) => {
  643. let objVal = Object.values(countedNames)
  644. strSix += item + objVal[index] + '\n'
  645. })
  646. sixStr = strSix
  647. }
  648. }
  649. console.log("周一",oneStr)
  650. console.log("周er",twoStr)
  651. console.log("周三",threeStr)
  652. console.log("周四",fourStr)
  653. console.log("周五",fiveStr)
  654. console.log("周六",sixStr)
  655. console.log("周日",sevenStr)
  656. let tempArr = [], newArr = []
  657. for (let i = 0; i < staffList.length; i++) {
  658. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  659. newArr.push({
  660. user_name: staffList[i].user_name,
  661. admin_user_id:staffList[i].admin_user_id,
  662. user_type:staffList[i].doctor_type,
  663. list: [{class_name:staffList[i].class_name,schedule_week:staffList[i].schedule_week}]
  664. })
  665. tempArr.push(staffList[i].user_name);
  666. } else {
  667. for (let j = 0; j < newArr.length; j++) {
  668. if (newArr[j].user_name == staffList[i].user_name) {
  669. newArr[j].list.push({class_name:staffList[i].class_name,admin_user_id:staffList[i].admin_user_id,schedule_week:staffList[i].schedule_week,user_type:staffList[i].doctor_type})
  670. }
  671. }
  672. }
  673. }
  674. let arr = [...newArr]
  675. arr.sort(this.compare('admin_user_id'))
  676. this.doctorlist.sort(this.compare('admin_user_id'))
  677. this.doctorlist.forEach((item, index) => {
  678.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  679.   }else{
  680.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  681.   }
  682. })
  683. arr.sort(this.compare('user_type'))
  684. let arr2 = []
  685. arr2.push({class_name:oneStr,schedule_week:1})
  686. arr2.push({class_name:twoStr,schedule_week:2})
  687. arr2.push({class_name:threeStr,schedule_week:3})
  688. arr2.push({class_name:fourStr,schedule_week:4})
  689. arr2.push({class_name:fiveStr,schedule_week:5})
  690. arr2.push({class_name:sixStr,schedule_week:6})
  691. arr2.push({class_name:zeroStr,schedule_week:0})
  692. var obj = {}
  693. obj.admin_user_id = "1000000"
  694. obj.user_name = "合计"
  695. obj.user_type = 10
  696. obj.list = arr2
  697. arr.push(obj)
  698. console.log("arr------",arr)
  699. this.tableData = []
  700. this.tableData = arr
  701. }
  702. })
  703. },
  704. getClass(name,index){
  705. if(name != undefined){
  706. let newClass = '';
  707. this.tableData.map(item => {
  708. if(item.user_name == name){
  709. if(item.list){
  710. item.list.map(it => {
  711. if(it.schedule_week == index){
  712. newClass = it.class_name
  713. }
  714. })
  715. }
  716. }
  717. })
  718. return newClass
  719. }
  720. },
  721. unique(arr) {
  722. const res = new Map();
  723. return arr.filter((arr) => !res.has(arr.admin_user_id) && res.set(arr.admin_user_id, 1))
  724. },
  725. //获取上一周下一周的排班数据
  726. getNextWeekList(){
  727. const params = {
  728. start_time:this.getTimestamp(this.weekDayArr[0]),
  729. end_time:this.getTimestamp(this.weekDayArr[6])
  730. }
  731. getNextWeekList(params).then(response=>{
  732. if(response.data.state == 1){
  733. var staffList = response.data.data.staffList
  734. var sevenStr = ""
  735. var oneStr = ""
  736. var twoStr = ""
  737. var threeStr = ""
  738. var fourStr = ""
  739. var fiveStr = ""
  740. var sixStr = ""
  741. for(let i=0;i<staffList.length;i++){
  742. if(staffList[i].schedule_week == 0){
  743. staffList[i].class_index = 0
  744. var arr = []
  745. this.arrZero.push(staffList[i].class_name)
  746. for(let i=0;i<this.arrZero.length;i++){
  747. if(this.arrZero[i]!=''){
  748. arr.push(this.arrZero[i])
  749. }
  750. }
  751. var countedNames = arr.reduce(function (allNames, name) {
  752. if (name in allNames) {
  753. allNames[name]++;
  754. }
  755. else {
  756. allNames[name] = 1;
  757. }
  758. return allNames;
  759. }, {});
  760. let objKey = Object.keys(countedNames)
  761. let objVal = Object.values(countedNames)
  762. var zeroStr = ''
  763. objKey.map((item,index) => {
  764. let objVal = Object.values(countedNames)
  765. zeroStr += item + objVal[index] + '\n'
  766. })
  767. sevenStr = zeroStr
  768. }
  769. if(staffList[i].schedule_week == 1){
  770. staffList[i].class_index = 1
  771. var arr = []
  772. this.arrOne.push(staffList[i].class_name)
  773. for(let i=0;i<this.arrOne.length;i++){
  774. if(this.arrOne[i]!=''){
  775. arr.push(this.arrOne[i])
  776. }
  777. }
  778. var countedNames = arr.reduce(function (allNames, name) {
  779. if (name in allNames) {
  780. allNames[name]++;
  781. }
  782. else {
  783. allNames[name] = 1;
  784. }
  785. return allNames;
  786. }, {});
  787. let objKey = Object.keys(countedNames)
  788. let objVal = Object.values(countedNames)
  789. let strOne = ''
  790. objKey.map((item,index) => {
  791. let objVal = Object.values(countedNames)
  792. strOne += item + objVal[index] + '\n'
  793. })
  794. oneStr = strOne
  795. }
  796. if(staffList[i].schedule_week == 2){
  797. staffList[i].class_index = 2
  798. var arr = []
  799. this.arrTwo.push(staffList[i].class_name)
  800. for(let i=0;i<this.arrTwo.length;i++){
  801. if(this.arrTwo[i]!=''){
  802. arr.push(this.arrTwo[i])
  803. }
  804. }
  805. var countedNames = arr.reduce(function (allNames, name) {
  806. if (name in allNames) {
  807. allNames[name]++;
  808. }
  809. else {
  810. allNames[name] = 1;
  811. }
  812. return allNames;
  813. }, {});
  814. let objKey = Object.keys(countedNames)
  815. let objVal = Object.values(countedNames)
  816. let strTwo = ''
  817. objKey.map((item,index) => {
  818. let objVal = Object.values(countedNames)
  819. strTwo += item + objVal[index] + '\n'
  820. })
  821. twoStr = strTwo
  822. }
  823. if(staffList[i].schedule_week == 3){
  824. staffList[i].class_index = 3
  825. var arr = []
  826. this.arrThree.push(staffList[i].class_name)
  827. for(let i=0;i<this.arrThree.length;i++){
  828. if(this.arrThree[i]!=''){
  829. arr.push(this.arrThree[i])
  830. }
  831. }
  832. var countedNames = arr.reduce(function (allNames, name) {
  833. if (name in allNames) {
  834. allNames[name]++;
  835. }
  836. else {
  837. allNames[name] = 1;
  838. }
  839. return allNames;
  840. }, {});
  841. let objKey = Object.keys(countedNames)
  842. let objVal = Object.values(countedNames)
  843. let strThree = ''
  844. objKey.map((item,index) => {
  845. let objVal = Object.values(countedNames)
  846. strThree += item + objVal[index] + '\n'
  847. })
  848. threeStr = strThree
  849. }
  850. if(staffList[i].schedule_week == 4){
  851. staffList[i].class_index = 4
  852. var arr = []
  853. this.arrFour.push(staffList[i].class_name)
  854. for(let i=0;i<this.arrFour.length;i++){
  855. if(this.arrFour[i]!=''){
  856. arr.push(this.arrFour[i])
  857. }
  858. }
  859. var countedNames = arr.reduce(function (allNames, name) {
  860. if (name in allNames) {
  861. allNames[name]++;
  862. }
  863. else {
  864. allNames[name] = 1;
  865. }
  866. return allNames;
  867. }, {});
  868. let objKey = Object.keys(countedNames)
  869. let objVal = Object.values(countedNames)
  870. let strFour = ''
  871. objKey.map((item,index) => {
  872. let objVal = Object.values(countedNames)
  873. strFour += item + objVal[index] + '\n'
  874. })
  875. fourStr = strFour
  876. }
  877. if(staffList[i].schedule_week == 5){
  878. staffList[i].class_index = 5
  879. var arr = []
  880. this.arrFive.push(staffList[i].class_name)
  881. for(let i=0;i<this.arrFive.length;i++){
  882. if(this.arrFive[i]!=''){
  883. arr.push(this.arrFive[i])
  884. }
  885. }
  886. var countedNames = arr.reduce(function (allNames, name) {
  887. if (name in allNames) {
  888. allNames[name]++;
  889. }
  890. else {
  891. allNames[name] = 1;
  892. }
  893. return allNames;
  894. }, {});
  895. let objKey = Object.keys(countedNames)
  896. let objVal = Object.values(countedNames)
  897. let strFive = ''
  898. objKey.map((item,index) => {
  899. let objVal = Object.values(countedNames)
  900. strFive += item + objVal[index] + '\n'
  901. })
  902. fiveStr = strFive
  903. }
  904. if(staffList[i].schedule_week == 6){
  905. staffList[i].class_index = 6
  906. var arr = []
  907. this.arrSix.push(staffList[i].class_name)
  908. for(let i=0;i<this.arrSix.length;i++){
  909. if(this.arrSix[i]!=''){
  910. arr.push(this.arrSix[i])
  911. }
  912. }
  913. var countedNames = arr.reduce(function (allNames, name) {
  914. if (name in allNames) {
  915. allNames[name]++;
  916. }
  917. else {
  918. allNames[name] = 1;
  919. }
  920. return allNames;
  921. }, {});
  922. let objKey = Object.keys(countedNames)
  923. let objVal = Object.values(countedNames)
  924. let strSix = ''
  925. objKey.map((item,index) => {
  926. let objVal = Object.values(countedNames)
  927. strSix += item + objVal[index] + '\n'
  928. })
  929. sixStr = strSix
  930. }
  931. }
  932. let tempArr = [], newArr = []
  933. for (let i = 0; i < staffList.length; i++) {
  934. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  935. newArr.push({
  936. user_name: staffList[i].user_name,
  937. admin_user_id:staffList[i].admin_user_id,
  938. user_type:staffList[i].doctor_type,
  939. list: [{class_name:staffList[i].class_name,schedule_week:staffList[i].schedule_week}]
  940. })
  941. tempArr.push(staffList[i].user_name);
  942. } else {
  943. for (let j = 0; j < newArr.length; j++) {
  944. if (newArr[j].user_name == staffList[i].user_name) {
  945. newArr[j].list.push({class_name:staffList[i].class_name,admin_user_id:staffList[i].admin_user_id,schedule_week:staffList[i].schedule_week, user_type:staffList[i].doctor_type,})
  946. }
  947. }
  948. }
  949. }
  950. let arr = [...newArr]
  951. arr.sort(this.compare('admin_user_id'))
  952. this.doctorlist.sort(this.compare('admin_user_id'))
  953. this.doctorlist.forEach((item, index) => {
  954.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  955.   }else{
  956.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  957.     // console.log("arr",arr)
  958.   }
  959. })
  960. arr.sort(this.compare('user_type'))
  961. let arr2 = []
  962. arr2.push({class_name:oneStr,schedule_week:1})
  963. arr2.push({class_name:twoStr,schedule_week:2})
  964. arr2.push({class_name:threeStr,schedule_week:3})
  965. arr2.push({class_name:fourStr,schedule_week:4})
  966. arr2.push({class_name:fiveStr,schedule_week:5})
  967. arr2.push({class_name:sixStr,schedule_week:6})
  968. arr2.push({class_name:zeroStr,schedule_week:0})
  969. var obj = {}
  970. obj.admin_user_id = "1000000"
  971. obj.user_name = "合计"
  972. obj.user_type = 10
  973. obj.list = arr2
  974. arr.push(obj)
  975. this.tableData = arr
  976. }
  977. })
  978. },
  979. changeOption(id){
  980. const params = {
  981. start_time:this.getTimestamp(this.weekDayArr[0]),
  982. end_time:this.getTimestamp(this.weekDayArr[6]),
  983. doctor_id:id
  984. }
  985. getScheduleByDoctorId(params).then(response=>{
  986. if(response.data.state == 1){
  987. var staffList = response.data.data.staffList
  988. // console.log("staffList",staffList)
  989. let tempArr = [], newArr = []
  990. for (let i = 0; i < staffList.length; i++) {
  991. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  992. newArr.push({
  993. user_type:staffList[i].doctor_type,
  994. user_name: staffList[i].user_name,
  995. admin_user_id:staffList[i].admin_user_id,
  996. list: [{class_name:staffList[i].class_name,schedule_week:staffList[i].schedule_week}]
  997. })
  998. tempArr.push(staffList[i].user_name);
  999. } else {
  1000. for (let j = 0; j < newArr.length; j++) {
  1001. if (newArr[j].user_name == staffList[i].user_name) {
  1002. newArr[j].list.push({class_name:staffList[i].class_name,admin_user_id:staffList[i].admin_user_id,schedule_week:staffList[i].schedule_week, user_type:staffList[i].doctor_type})
  1003. }
  1004. }
  1005. }
  1006. }
  1007. if(id == 0){
  1008. let arr = [...newArr]
  1009. arr.sort(this.compare('admin_user_id'))
  1010. this.doctorlist.sort(this.compare('admin_user_id'))
  1011. this.doctorlist.forEach((item, index) => {
  1012.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1013.   }else{
  1014.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  1015.     // console.log("arr",arr)
  1016.   }
  1017. })
  1018. arr.sort(this.compare('user_type'))
  1019. this.tableData = arr
  1020. }
  1021. if(id == 2){
  1022. let arr = [...newArr]
  1023. arr.sort(this.compare('admin_user_id'))
  1024. this.doctorlist.sort(this.compare('admin_user_id'))
  1025. let newDoctor = []
  1026. this.doctorlist.map(item => {
  1027. if (item.user_type == 2) {
  1028. newDoctor.push(item)
  1029. }
  1030. })
  1031. newDoctor.map((item, index) => {
  1032. if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1033.   }else{
  1034.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: []})
  1035.     // console.log("arr",arr)
  1036.   }
  1037. })
  1038. this.tableData = arr
  1039. }
  1040. if(id == 3){
  1041. let arr = [...newArr]
  1042. arr.sort(this.compare('admin_user_id'))
  1043. this.doctorlist.sort(this.compare('admin_user_id'))
  1044. let newDoctor = []
  1045. this.doctorlist.map(item => {
  1046. if (item.user_type == 3) {
  1047. newDoctor.push(item)
  1048. }
  1049. })
  1050. newDoctor.map((item, index) => {
  1051. if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1052.   }else{
  1053.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: []})
  1054.     // console.log("arr",arr)
  1055.   }
  1056. })
  1057. this.tableData = arr
  1058. }
  1059. }
  1060. })
  1061. },
  1062. toSearch(){
  1063. const params = {
  1064. user_name: this.keywords,
  1065. start_time:this.getTimestamp(this.weekDayArr[0]),
  1066. end_time:this.getTimestamp(this.weekDayArr[6])
  1067. }
  1068. toSearchScheduleList(params).then(response=>{
  1069. if(response.data.state == 1){
  1070. var staffList = response.data.data.staffList
  1071. let tempArr = [], newArr = []
  1072. for (let i = 0; i < staffList.length; i++) {
  1073. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1074. newArr.push({
  1075. user_name: staffList[i].user_name,
  1076. admin_user_id:staffList[i].admin_user_id,
  1077. list: [{class_name:staffList[i].class_name,schedule_week:staffList[i].schedule_week}]
  1078. })
  1079. tempArr.push(staffList[i].user_name);
  1080. } else {
  1081. for (let j = 0; j < newArr.length; j++) {
  1082. if (newArr[j].user_name == staffList[i].user_name) {
  1083. newArr[j].list.push({class_name:staffList[i].class_name,admin_user_id:staffList[i].admin_user_id,schedule_week:staffList[i].schedule_week})
  1084. }
  1085. }
  1086. }
  1087. }
  1088. if(this.keywords != ''){
  1089. this.tableData = newArr
  1090. }else{
  1091. let arr = [...newArr]
  1092. arr.sort(this.compare('admin_user_id'))
  1093. this.doctorlist.sort(this.compare('admin_user_id'))
  1094. this.doctorlist.forEach((item, index) => {
  1095.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1096.   }else{
  1097.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: []})
  1098.     // console.log("arr",arr)
  1099.   }
  1100. })
  1101. // console.log("arr",arr)
  1102. this.tableData = arr
  1103. }
  1104. }
  1105. })
  1106. },
  1107. DeleteStaffSchedule(){
  1108. const params = {
  1109. start_time:this.getTimestamp(this.weekDayArr[0]),
  1110. end_time:this.getTimestamp(this.weekDayArr[6])
  1111. }
  1112. this.$confirm(
  1113. '是否要清除当周排班? <br>清除后,信息将无法恢复',
  1114. '删除提示',
  1115. {
  1116. dangerouslyUseHTMLString: true,
  1117. confirmButtonText: '确定',
  1118. cancelButtonText: '取消',
  1119. type: 'warning'
  1120. }
  1121. ).then(()=>{
  1122. DeleteStaffSchedule(params).then(response=>{
  1123. if(response.data.state == 1){
  1124. var msg = response.data.data.msg
  1125. this.$message.success("清除成功")
  1126. this.getStaffScheduleList()
  1127. }
  1128. })
  1129. })
  1130. },
  1131. copyStaffSchedule(){
  1132. this.newVisible = true
  1133. // const params = {
  1134. // start_time:this.getTimestamp(this.weekDayArr[0]),
  1135. // end_time:this.getTimestamp(this.weekDayArr[6])
  1136. // }
  1137. // copyStaffSchedule(params).then(response=>{
  1138. // if(response.data.state == 1){
  1139. // var msg = response.data.data.msg
  1140. // console.log("msg",msg)
  1141. // this.$message.success("复制成功")
  1142. // }else{
  1143. // this.$message.error("排班已存在")
  1144. // }
  1145. // })
  1146. },
  1147. toContinuous(){
  1148. var is_status = 0
  1149. if(this.isChecked == false){
  1150. is_status = 0
  1151. }
  1152. if(this.isChecked == true){
  1153. is_status = 1
  1154. }
  1155. const params = {
  1156. is_status:is_status
  1157. }
  1158. UpdateContinusSchedule(params).then(response=>{
  1159. if(response.data.state == 1){
  1160. var schedule = response.data.data.schedule
  1161. this.$message.success("保存成功")
  1162. }
  1163. })
  1164. },
  1165. setDate1 (date) {
  1166. var week = date.getDay() - 1
  1167. date = this.addDate(date, week * -1)
  1168. this.currentDate = new Date(date)
  1169. let arr1 = []
  1170. for (var i = 0; i < this.clen; i++) {
  1171. arr1.push(this.formatDate(i == 0 ? date : this.addDate(date, 1)))
  1172. }
  1173. this.weekList.push(arr1)
  1174. let num = this.weekNum
  1175. this.currentFirstDate1 = num + 1
  1176. },
  1177. submitAction(formName){
  1178. var label = ""
  1179. for(let i=0;i<this.timeOptions.length;i++){
  1180. if(this.form.copyWeek == this.timeOptions[i].value){
  1181. label = this.timeOptions[i].label
  1182. }
  1183. }
  1184. var start = label.split('~')
  1185. var copy_startime = this.getTimestamp(start[0])
  1186. var copy_endtime = this.getTimestamp(start[1])
  1187. const params = {
  1188. start_time:this.getTimestamp(this.weekDayArr[0]),
  1189. end_time:this.getTimestamp(this.weekDayArr[6]),
  1190. copy_startime:copy_startime,
  1191. copy_endtime:copy_endtime,
  1192. }
  1193. this.$refs[formName].validate(valid=>{
  1194. if(valid){
  1195. copyStaffSchedule(params).then(response=>{
  1196. if(response.data.state == 1){
  1197. var msg = response.data.data.msg
  1198. this.$message.success("复制成功")
  1199. this.newVisible = false
  1200. }else{
  1201. this.$message.error("排班已存在")
  1202. }
  1203. })
  1204. }
  1205. })
  1206. },
  1207. compare(property){
  1208. return function(a,b){
  1209. var value1 = a[property];
  1210. var value2 = b[property];
  1211. return value2 - value1;
  1212. }
  1213. },
  1214. tableCellStyle (row, rowIndex, column) {
  1215. // console.log("row",row.column.label)
  1216. var week = (row.column.label).split('');
  1217. // console.log("week",week)
  1218. var weeks = ""
  1219. if (week.length == 14) {
  1220. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]+week[12]
  1221. }
  1222. if(week.length == 13){
  1223. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]
  1224. }
  1225. // console.log("week",week)
  1226. // console.log("weeks",weeks)
  1227. var weekdate = this.getTimestamp(weeks)
  1228. // console.log("日期",weekdate)
  1229. // console.log("当前日期",this.timeNow)
  1230. if(weekdate < this.timeNow){
  1231. return 'background-color:#e5e5e5;'
  1232. }
  1233. },
  1234. },
  1235. created(){
  1236. //获取医护人员
  1237. this.getDoctorList()
  1238. //获取班种
  1239. this.getScheduleList()
  1240. let year = new Date().getFullYear()
  1241. let month = new Date().getMonth() + 1
  1242. let date = new Date().getDate()
  1243. this.weekNum = this.getYearWeek(year,month,date)
  1244. this.todayDate=this.formatDate(new Date())
  1245. this.setDate(new Date())
  1246. for (var i = 0; i <= 9; i++) {
  1247. this.setDate1(this.addDate(this.currentDate, 7))
  1248. }
  1249. let newNum = 0
  1250. for(let i = 0; i < this.weekList.length; i++){
  1251. if(this.weekNum + i + 1 <= 53){
  1252. let num = this.weekNum + i + 1
  1253. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + num + ')'
  1254. this.typeOptions.push({value:i,label:str})
  1255. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1256. this.timeOptions.push({value:i,label:stt})
  1257. }else{
  1258. newNum++
  1259. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + newNum + ')'
  1260. this.typeOptions.push({value:i,label:str})
  1261. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1262. this.timeOptions.push({value:i,label:stt})
  1263. }
  1264. }
  1265. var now = moment().locale('zh-cn').format('YYYY-MM-DD 00:00:00')
  1266. this.timeNow = this.getTimestamp(now)
  1267. }
  1268. }
  1269. </script>
  1270. <style lang="scss" scoped>
  1271. .dateBox{
  1272. border: 1px solid #DCDFE6;
  1273. height: 36px;
  1274. line-height: 36px;
  1275. text-align: center;
  1276. padding: 0 10px;
  1277. border-radius: 4px;
  1278. }
  1279. .classBox{
  1280. width:28%;
  1281. height: 100%;
  1282. border: 1px solid #d0d3da;
  1283. .classTitle{
  1284. height: 42px;
  1285. text-align: center;
  1286. line-height: 42px;
  1287. background-color: rgb(245, 247, 250);
  1288. color: rgb(96, 98, 102);
  1289. font-weight:bold;
  1290. }
  1291. .classMain{
  1292. height: 400px;
  1293. padding: 0 0 0 20px;
  1294. display: flex;
  1295. justify-content: space-between;
  1296. flex-direction: column;
  1297. >div>p{
  1298. line-height: 30px;
  1299. color: rgb(48, 49, 51);
  1300. }
  1301. .classMainBox{
  1302. height: 350px;
  1303. overflow-y: auto;
  1304. }
  1305. }
  1306. }
  1307. </style>
  1308. <style lang="scss">
  1309. .schedulingTable{
  1310. .el-table th .cell {
  1311. white-space: pre-line;/*保留换行符*/
  1312. }
  1313. }
  1314. </style>