Elizabeth's proactive approach involves introducing urinal toilet attachment , an ingenious concept that optimizes space and functionality.

index.vue 97KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059
  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="setting">设置</el-button>
  7. <el-button type="primary" @click="DeleteStaffSchedule">清除</el-button>
  8. <el-button type="primary" @click="copyStaffSchedule">复制</el-button>
  9. <el-button type="primary" icon="el-icon-printer" @click="toPrint">打印</el-button>
  10. <el-button type="primary" icon="el-icon-printer" @click="exportList">导出</el-button>
  11. </div>
  12. </div>
  13. <div class="app-container">
  14. <div class="cell clearfix">
  15. <el-input
  16. size="small"
  17. style="width: 150px;"
  18. class="filter-item"
  19. v-model.trim="keywords"
  20. placeholder="请输入医护人员姓名"
  21. @keyup.enter.native='toSearch'
  22. />
  23. <el-button
  24. size="small"
  25. class="filter-item"
  26. type="primary"
  27. icon="el-icon-search"
  28. @click="toSearch"
  29. >搜索</el-button
  30. >
  31. <el-select style="margin-left:10px;width:150px;" v-model="typeValue" placeholder="请选择" @change="changeOption">
  32. <el-option
  33. v-for="item in options"
  34. :key="item.value"
  35. :label="item.label"
  36. :value="item.value">
  37. </el-option>
  38. </el-select>
  39. <el-button @click="lastclick" type="text" style="margin:0 10px;">&lt;上一周({{ weekNum - 1 }})</el-button>
  40. <div class="dateBox">{{ weekDayArr[0] }}-{{ weekDayArr[6] }}({{ weekNum }})</div>
  41. <el-button @click="nextclick" type="text" style="margin:0 10px;">下一周({{ weekNum + 1 }})&gt;</el-button>
  42. </div>
  43. <div class="schedulingTable" style="display:flex;justify-content: space-between;">
  44. <div style="width: 70%">
  45. <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">
  46. <el-table-column prop="name" label="医护姓名" style="width:16%" align="center">
  47. <template slot-scope="scope">
  48. <span>{{scope.row.user_name}}</span>
  49. </template>
  50. </el-table-column>
  51. <el-table-column :label="'周一\n(' + weekDayArr[0] + ')'" style="width:200px" align="center">
  52. <template slot-scope="scope">
  53. <div @click="hangdleClick(scope.row,scope.$index,0)">
  54. <el-dropdown trigger="click" @command="changeSchedule">
  55. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,1) == 2' style="color:red">
  56. <span>{{ getClass(scope.row.user_name,1) }}</span><i v-if="getTimestamp(weekDayArr[0])>=timeNow && scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  57. </span>
  58. <span class="el-dropdown-link" v-else>
  59. <span>{{ getClass(scope.row.user_name,1) }}</span><i v-if="getTimestamp(weekDayArr[0])>=timeNow && scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  60. </span>
  61. <el-dropdown-menu slot="dropdown" >
  62. <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>
  63. </el-dropdown-menu>
  64. </el-dropdown>
  65. </div>
  66. </template>
  67. </el-table-column>
  68. <el-table-column prop="name" :label="'周二\n(' + weekDayArr[1] + ')'" style="width:14%" align="center">
  69. <template slot-scope="scope">
  70. <div @click="hangdleClick(scope.row,scope.$index,1)">
  71. <el-dropdown trigger="click" @command="changeSchedule">
  72. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,2) == 2' style="color:red">
  73. <span>{{ getClass(scope.row.user_name,2) }}</span><i v-if="getTimestamp(weekDayArr[1])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  74. </span>
  75. <span class="el-dropdown-link" v-else>
  76. <span>{{ getClass(scope.row.user_name,2) }}</span><i v-if="getTimestamp(weekDayArr[1])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  77. </span>
  78. <el-dropdown-menu slot="dropdown" >
  79. <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>
  80. </el-dropdown-menu>
  81. </el-dropdown>
  82. </div>
  83. </template>
  84. </el-table-column>
  85. <el-table-column prop="name" :label="'周三\n(' + weekDayArr[2] + ')'" style="width:14%" align="center">
  86. <template slot-scope="scope">
  87. <div @click="hangdleClick(scope.row,scope.$index,2)">
  88. <el-dropdown trigger="click" @command="changeSchedule">
  89. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,3) == 2' style="color:red">
  90. <span>{{ getClass(scope.row.user_name,3) }}</span><i v-if="getTimestamp(weekDayArr[2])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  91. </span>
  92. <span class="el-dropdown-link" v-else>
  93. <span>{{ getClass(scope.row.user_name,3) }}</span><i v-if="getTimestamp(weekDayArr[2])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  94. </span>
  95. <el-dropdown-menu slot="dropdown" >
  96. <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>
  97. </el-dropdown-menu>
  98. </el-dropdown>
  99. </div>
  100. </template>
  101. </el-table-column>
  102. <el-table-column prop="name" :label="'周四\n(' + weekDayArr[3] + ')'" style="width:14%" align="center">
  103. <template slot-scope="scope">
  104. <div @click="hangdleClick(scope.row,scope.$index,3)">
  105. <el-dropdown trigger="click" @command="changeSchedule">
  106. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,4) == 2' style="color:red">
  107. <span>{{ getClass(scope.row.user_name,4) }}</span><i v-if="getTimestamp(weekDayArr[3])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  108. </span>
  109. <span class="el-dropdown-link" v-else>
  110. <span>{{ getClass(scope.row.user_name,4) }}</span><i v-if="getTimestamp(weekDayArr[3])>=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[3])<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[4] + ')'" style="width:14%" align="center">
  120. <template slot-scope="scope">
  121. <div @click="hangdleClick(scope.row,scope.$index,4)">
  122. <el-dropdown trigger="click" @command="changeSchedule">
  123. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,5) == 2' style="color:red">
  124. <span>{{ getClass(scope.row.user_name,5) }}</span><i v-if="getTimestamp(weekDayArr[4])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  125. </span>
  126. <span class="el-dropdown-link" v-else>
  127. <span>{{ getClass(scope.row.user_name,5) }}</span><i v-if="getTimestamp(weekDayArr[4])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  128. </span>
  129. <el-dropdown-menu slot="dropdown" >
  130. <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>
  131. </el-dropdown-menu>
  132. </el-dropdown>
  133. </div>
  134. </template>
  135. </el-table-column>
  136. <el-table-column prop="name" :label="'周六\n(' + weekDayArr[5] + ')'" style="width:14%" align="center">
  137. <template slot-scope="scope">
  138. <div @click="hangdleClick(scope.row,scope.$index,5)">
  139. <el-dropdown trigger="click" @command="changeSchedule">
  140. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,6) == 2' style="color:red">
  141. <span>{{ getClass(scope.row.user_name,6) }}</span><i v-if="getTimestamp(weekDayArr[5])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  142. </span>
  143. <span class="el-dropdown-link" v-else>
  144. <span>{{ getClass(scope.row.user_name,6) }}</span><i v-if="getTimestamp(weekDayArr[5])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  145. </span>
  146. <el-dropdown-menu slot="dropdown" >
  147. <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>
  148. </el-dropdown-menu>
  149. </el-dropdown>
  150. </div>
  151. </template>
  152. </el-table-column>
  153. <el-table-column prop="name" :label="'周日\n(' + weekDayArr[6] + ')'" style="width:14%" align="center">
  154. <template slot-scope="scope">
  155. <div @click="hangdleClick(scope.row,scope.$index,6)">
  156. <el-dropdown trigger="click" @command="changeSchedule">
  157. <span class="el-dropdown-link" v-if='getClassAttributes(scope.row.user_name,0) == 2' style="color:red">
  158. <span>{{ getClass(scope.row.user_name,0) }}</span><i v-if="getTimestamp(weekDayArr[6])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  159. </span>
  160. <span class="el-dropdown-link" v-else>
  161. <span>{{ getClass(scope.row.user_name,0) }}</span><i v-if="getTimestamp(weekDayArr[6])>=timeNow&&scope.row.admin_user_id!=1000000?true:false" class="el-icon-arrow-down el-icon--right"></i>
  162. </span>
  163. <el-dropdown-menu slot="dropdown" >
  164. <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>
  165. </el-dropdown-menu>
  166. </el-dropdown>
  167. </div>
  168. </template>
  169. </el-table-column>
  170. </el-table>
  171. </div>
  172. <div class="classBox">
  173. <div class="classTitle">班种</div>
  174. <div class="classMain">
  175. <div class="classMainBox">
  176. <p v-for="(item,index) in schedulelist" :key="index">
  177. {{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> )
  178. </p>
  179. </div>
  180. <el-checkbox style="text-align:center;padding-bottom: 10px;" v-model="isChecked" @change="toContinuous">连续排班</el-checkbox>
  181. </div>
  182. </div>
  183. </div>
  184. <el-dialog
  185. title="复制排班"
  186. width="600px"
  187. :visible.sync="newVisible"
  188. >
  189. <el-form :model="form" ref="form" label-width="90px" :rules="rules">
  190. <el-form-item label="复制到 : " required prop="copyWeek">
  191. <el-select v-model="form.copyWeek" placeholder="请选择">
  192. <el-option
  193. v-for="item in typeOptions"
  194. :key="item.value"
  195. :label="item.label"
  196. :value="item.value">
  197. </el-option>
  198. </el-select>
  199. </el-form-item>
  200. </el-form>
  201. <div slot="footer" class="dialog-footer">
  202. <el-button @click="newVisible=false">取 消</el-button>
  203. <el-button type="primary" @click="submitAction('form')">保 存</el-button>
  204. </div>
  205. </el-dialog>
  206. <el-dialog
  207. title="设置"
  208. width="800px"
  209. :visible.sync="nurseVisible"
  210. :before-close="_close"
  211. >
  212. <div>
  213. <el-tabs v-model="activeName">
  214. <el-tab-pane label="护士" name="nurse">
  215. <el-table
  216. :data="nurseTableData"
  217. border
  218. height="250"
  219. style="width: 100%">
  220. <el-table-column align="center" prop="name" label="姓名" width="180">
  221. <template slot-scope="scope">
  222. {{scope.row.user_name}}
  223. </template>
  224. </el-table-column>
  225. <el-table-column align="center" prop="date" label="职称" width="180">
  226. <template slot-scope="scope">
  227. <span v-if="scope.row.user_title == 1">医士</span>
  228. <span v-if="scope.row.user_title == 2">医师</span>
  229. <span v-if="scope.row.user_title == 3">住院医师</span>
  230. <span v-if="scope.row.user_title == 4">主治医师</span>
  231. <span v-if="scope.row.user_title == 5">副主任医师</span>
  232. <span v-if="scope.row.user_title == 6">主任医师</span>
  233. <span v-if="scope.row.user_title == 7">护士</span>
  234. <span v-if="scope.row.user_title == 8">护师</span>
  235. <span v-if="scope.row.user_title == 9">主管护师</span>
  236. <span v-if="scope.row.user_title == 10">副主任护师</span>
  237. <span v-if="scope.row.user_title == 11">主任护师</span>
  238. <span v-if="scope.row.user_title == 12">运营专员</span>
  239. <span v-if="scope.row.user_title == 13">运营主管</span>
  240. </template>
  241. </el-table-column>
  242. <el-table-column
  243. align="center"
  244. label="排序">
  245. <template slot-scope="scope">
  246. <el-input v-model="scope.row.sort" @change="changeSort(scope.row)" placeholder="请输入内容"></el-input>
  247. </template>
  248. </el-table-column>
  249. <el-table-column
  250. align="center"
  251. label="是否排班">
  252. <template slot-scope="scope">
  253. <el-radio-group v-model="scope.row.is_sort" @change="changeRadio(scope.row)">
  254. <el-radio :label="1">是</el-radio>
  255. <el-radio :label="0">否</el-radio>
  256. </el-radio-group>
  257. </template>
  258. </el-table-column>
  259. </el-table>
  260. </el-tab-pane>
  261. <el-tab-pane label="医生" name="doctor">
  262. <el-table
  263. :data="doctorTableData"
  264. border
  265. height="250"
  266. style="width: 100%">
  267. <el-table-column
  268. align="center"
  269. prop="name"
  270. label="姓名"
  271. width="180">
  272. <template slot-scope="scope">
  273. {{scope.row.user_name}}
  274. </template>
  275. </el-table-column>
  276. <el-table-column align="center" prop="date" label="职称"width="180">
  277. <template slot-scope="scope">
  278. <span v-if="scope.row.user_title == 1">医士</span>
  279. <span v-if="scope.row.user_title == 2">医师</span>
  280. <span v-if="scope.row.user_title == 3">住院医师</span>
  281. <span v-if="scope.row.user_title == 4">主治医师</span>
  282. <span v-if="scope.row.user_title == 5">副主任医师</span>
  283. <span v-if="scope.row.user_title == 6">主任医师</span>
  284. <span v-if="scope.row.user_title == 7">护士</span>
  285. <span v-if="scope.row.user_title == 8">护师</span>
  286. <span v-if="scope.row.user_title == 9">主管护师</span>
  287. <span v-if="scope.row.user_title == 10">副主任护师</span>
  288. <span v-if="scope.row.user_title == 11">主任护师</span>
  289. <span v-if="scope.row.user_title == 12">运营专员</span>
  290. <span v-if="scope.row.user_title == 13">运营主管</span>
  291. </template>
  292. </el-table-column>
  293. <el-table-column
  294. align="center"
  295. label="排序">
  296. <template slot-scope="scope">
  297. <el-input v-model="scope.row.sort" placeholder="请输入内容" @change="changeSort(scope.row)"></el-input>
  298. </template>
  299. </el-table-column>
  300. <el-table-column
  301. align="center"
  302. label="是否排班">
  303. <template slot-scope="scope">
  304. <el-radio-group v-model="scope.row.is_sort" @change="changeRadio(scope.row)">
  305. <el-radio :label="1">是</el-radio>
  306. <el-radio :label="0">否</el-radio>
  307. </el-radio-group>
  308. </template>
  309. </el-table-column>
  310. </el-table>
  311. </el-tab-pane>
  312. </el-tabs>
  313. </div>
  314. </el-dialog>
  315. </div>
  316. <!-- <el-dialog
  317. title="导出排班"
  318. :visible.sync="exportDialogVisible"
  319. width="30%">
  320. <span>
  321. <div class="block">
  322. <span class="demonstration">月份:</span>
  323. <el-date-picker
  324. v-model="value1"
  325. type="week"
  326. format="yyyy 第 WW 周"
  327. placeholder="选择周">
  328. </el-date-picker>
  329. </div>
  330. </span>
  331. <span slot="footer" class="dialog-footer">
  332. <el-button @click="dialogVisible = false">取 消</el-button>
  333. <el-button type="primary" @click="exportList">确 定</el-button>
  334. </span>
  335. </el-dialog> -->
  336. </div>
  337. </template>
  338. <script>
  339. const moment = require('moment')
  340. import BreadCrumb from '@/xt_pages/components/bread-crumb'
  341. import { getDoctorList,getScheduleList,addSchedule,getStaffScheduleList,getNextWeekList,getScheduleByDoctorId,toSearchScheduleList,DeleteStaffSchedule,copyStaffSchedule,UpdateContinusSchedule,SaveNurseSort,SaveIsSchedule } from '@/api/doctorSchedule'
  342. import { constants } from 'crypto'
  343. export default {
  344. components:{
  345. BreadCrumb
  346. },
  347. data(){
  348. return{
  349. crumbs: [
  350. { path: false, name: '医护排班' },
  351. { path: '/medicalScheduling/index', name: '医护排班' }
  352. ],
  353. keywords:'',
  354. options: [{
  355. value: '0',
  356. label: '全部'
  357. }, {
  358. value: '2',
  359. label: '医生'
  360. }, {
  361. value: '3',
  362. label: '护士'
  363. }],
  364. typeValue:'0',
  365. tableData: [],
  366. isChecked:true,
  367. schedulelist:[],
  368. weekNum:'',
  369. weekDayArr:[],
  370. todayDate:'',
  371. clen:7,
  372. nowYear: new Date().getFullYear(),
  373. schedule_week:0,
  374. docobj:{},
  375. class_name:"",
  376. doctorlist:[],
  377. schedule_date:"",
  378. newVisible:false,
  379. typeOptions:[],
  380. timeOptions:[],
  381. copyWeek:'',
  382. weekList: [],
  383. currentFirstDate1: '',
  384. form:{
  385. copyWeek:"",
  386. },
  387. rules: {
  388. copyWeek: [{ required: true, message: "请选择复制时间段", trigger: "blur" }],
  389. },
  390. timeNow:0,
  391. arrZero:[],
  392. arrOne:[],
  393. arrTwo:[],
  394. arrThree:[],
  395. arrFour:[],
  396. arrFive:[],
  397. arrSix:[],
  398. arrSeven:[],
  399. nurseVisible:false,
  400. activeName:'nurse',
  401. radio:'1',
  402. nurseTableData:[],
  403. doctorTableData:[],
  404. exportDialogVisible:false,
  405. month_time:""
  406. }
  407. },
  408. methods:{
  409. search(){},
  410. // toPrint(){
  411. // this.exportDialogVisible = true
  412. // },
  413. toPrint(){
  414. this.$router.push({
  415. path: '/medicalScheduling/schedule/print?starttime='+this.getTimestamp(this.weekDayArr[0])+"&endtime="+this.getTimestamp(this.weekDayArr[6])+"&weekArr="+ this.weekDayArr+"&typeValue="+this.typeValue,
  416. // query: { date: date }
  417. })
  418. },
  419. getDoctorList(){
  420. getDoctorList().then(response=>{
  421. if(response.data.state == 1){
  422. var list = response.data.data.list
  423. // console.log("医护列表",list)
  424. // this.tableData = list
  425. // let arr = []
  426. // list.map(item => {
  427. // if(item.is_sort == 1){
  428. // arr.push(item)
  429. // }
  430. // })
  431. // this.doctorlist = arr
  432. //获取班种列表
  433. this.getStaffScheduleList()
  434. var doctorlist = response.data.data.doctorlist
  435. let arr = []
  436. for(let i=0;i<doctorlist.length;i++){
  437. if(doctorlist[i].sort == 0){
  438. doctorlist[i].sort = ""
  439. }
  440. }
  441. console.log('doctorlist',doctorlist)
  442. this.doctorTableData = doctorlist
  443. var nurselist = response.data.data.nurselist
  444. for(let i=0;i<nurselist.length;i++){
  445. if(nurselist[i].sort == 0){
  446. nurselist[i].sort = ""
  447. }
  448. }
  449. this.nurseTableData = nurselist
  450. }
  451. })
  452. },
  453. getScheduleList(){
  454. getScheduleList().then(response=>{
  455. if(response.data.state == 1){
  456. var schedulelist = response.data.data.scheduleList
  457. // console.log("schedulelist",schedulelist)
  458. for(let i=0;i<schedulelist.length;i++){
  459. if(schedulelist[i].timeone_type == 1){
  460. schedulelist[i].timeone_type = "当日"
  461. }
  462. if(schedulelist[i].timeone_type == 2){
  463. schedulelist[i].timeone_type = "次日"
  464. }
  465. if(schedulelist[i].timetwo_type == 1){
  466. schedulelist[i].timetwo_type = "当日"
  467. }
  468. if(schedulelist[i].timetwo_type == 2){
  469. schedulelist[i].timetwo_type = "次日"
  470. }
  471. }
  472. this.schedulelist = schedulelist
  473. }
  474. })
  475. },
  476. hangdleClick(val,index,num){
  477. // console.log("val",val)
  478. this.docobj = val
  479. if(this.getTimestamp(this.weekDayArr[num]) < this.timeNow){
  480. this.$message.error("过去日期不可以编辑")
  481. return
  482. }
  483. },
  484. clickThis(row, column, cell, event){
  485. var week = (column.label).split('');
  486. var weeks = week[0]+week[1]
  487. if(weeks == "周日"){
  488. this.schedule_week = 0
  489. this.schedule_date = this.weekDayArr[6]
  490. }
  491. if(weeks == "周一"){
  492. this.schedule_week = 1
  493. this.schedule_date = this.weekDayArr[0]
  494. }
  495. if(weeks=="周二"){
  496. this.schedule_week = 2
  497. this.schedule_date = this.weekDayArr[1]
  498. }
  499. if(weeks=="周三"){
  500. this.schedule_week = 3
  501. this.schedule_date = this.weekDayArr[2]
  502. }
  503. if(weeks=="周四"){
  504. this.schedule_week = 4
  505. this.schedule_date = this.weekDayArr[3]
  506. }
  507. if(weeks == "周五"){
  508. this.schedule_week = 5
  509. this.schedule_date = this.weekDayArr[4]
  510. }
  511. if(weeks== "周六"){
  512. this.schedule_week = 6
  513. this.schedule_date = this.weekDayArr[5]
  514. }
  515. },
  516. changeSchedule(id){
  517. var class_name = ""
  518. for(let i=0;i<this.schedulelist.length;i++){
  519. if(id == this.schedulelist[i].id){
  520. class_name = this.schedulelist[i].class_name
  521. }
  522. }
  523. let arr = [...this.tableData]
  524. // console.log("arr===",arr)
  525. for(let i=0;i<arr.length;i++){
  526. if(this.docobj.id == arr[i].id){
  527. arr[i].class_name = class_name
  528. arr[i].class_index = this.schedule_week
  529. }
  530. }
  531. // console.log("arr",arr)
  532. this.tableData = arr
  533. const params = {
  534. doctor_id:this.docobj.admin_user_id,
  535. doctor_type:this.docobj.user_type,
  536. schedule_type:id,
  537. schedule_week:this.schedule_week,
  538. start_time:this.getTimestamp(this.weekDayArr[0]),
  539. end_time:this.getTimestamp(this.weekDayArr[6]),
  540. schedule_date:this.getTimestamp(this.schedule_date)
  541. }
  542. // console.log("params",params)
  543. addSchedule(params).then(response=>{
  544. if(response.data.state == 1){
  545. var schedule = response.data.data.schedule
  546. // console.log("schedule",schedule)
  547. this.$message.success("保存成功")
  548. this.getStaffScheduleList()
  549. }
  550. })
  551. },
  552. formatDate(date){
  553. var year = date.getFullYear()+'.'
  554. var month = (date.getMonth()+1)+'.';
  555. var day = date.getDate();
  556. return year+month+day
  557. },
  558. formatDateTwo(date){
  559. var year = date.getFullYear()+'.'
  560. var month = (date.getMonth()+1)+'.';
  561. var day = date.getDate();
  562. return year+month+day
  563. },
  564. addDate(date,n){
  565. date.setDate(date.getDate()+n);
  566. return date;
  567. },
  568. //
  569. setDate(date){
  570. var week = date.getDay()-1;
  571. date = this.addDate(date,week*-1);
  572. this.currentFirstDate = new Date(date);
  573. this.currentDate = new Date(date)
  574. for(var i = 0;i<this.clen; i++){
  575. this.weekDayArr.push(this.formatDate(i==0 ? date : this.addDate(date,1)))
  576. }
  577. },
  578. //上一周
  579. lastclick(){
  580. this.weekDayArr=[]
  581. this.setDate(this.addDate(this.currentFirstDate,-7));
  582. if (this.weekNum == 1) {
  583. let year = this.nowYear - 1
  584. let month = 12
  585. let date = 31
  586. this.weekNum = this.getYearWeek(year, month, date)
  587. this.nowYear = this.nowYear - 1
  588. }
  589. this.weekNum = this.weekNum - 1
  590. this.getNextWeekList()
  591. },
  592. //下一周
  593. nextclick(){
  594. this.weekDayArr=[]
  595. this.setDate(this.addDate(this.currentFirstDate,7));
  596. this.weekNum = this.weekNum + 1
  597. if (this.weekNum == 53) {
  598. let year = this.nowYear + 1
  599. let month = 1
  600. let date = 1
  601. this.weekNum = this.getYearWeek(year, month, date)
  602. this.nowYear = this.nowYear + 1
  603. }
  604. this.getNextWeekList()
  605. },
  606. getYearWeek(year,month,date){
  607. /*
  608. dateNow是当前日期
  609. dateFirst是当年第一天
  610. dataNumber是当前日期是今年第多少天
  611. 用dataNumber + 当前年的第一天的周差距的和在除以7就是本年第几周
  612. */
  613. let dateNow = new Date(year, parseInt(month) - 1, date);
  614. let dateFirst = new Date(year, 0, 1);
  615. let dataNumber = Math.round((dateNow.valueOf() - dateFirst.valueOf()) / 86400000);
  616. return Math.ceil((dataNumber + ((dateFirst.getDay() + 1) - 1)) / 7);
  617. },
  618. getTimestamp(time) { //把时间日期转成时间戳
  619. return (new Date(time)).getTime() / 1000
  620. },
  621. beforeHandleCommand(item,row){
  622. return {
  623. 'command': item,
  624. 'row': row
  625. }
  626. },
  627. //获取所有医护排班数据
  628. getStaffScheduleList(){
  629. const params = {
  630. start_time:this.getTimestamp(this.weekDayArr[0]),
  631. end_time:this.getTimestamp(this.weekDayArr[6])
  632. }
  633. getStaffScheduleList(params).then(response=>{
  634. if(response.data.state == 1){
  635. var staffList = response.data.data.staffList
  636. // console.log("获取所有排班",staffList)
  637. var sevenStr = ""
  638. var oneStr = ""
  639. var twoStr = ""
  640. var threeStr = ""
  641. var fourStr = ""
  642. var fiveStr = ""
  643. var sixStr = ""
  644. this.arrZero = []
  645. this.arrOne = []
  646. this.arrTwo = []
  647. this.arrThree = []
  648. this.arrFour = []
  649. this.arrFive = []
  650. this.arrSix = []
  651. for(let i=0;i<staffList.length;i++){
  652. if(staffList[i].schedule_week == 0){
  653. staffList[i].class_index = 0
  654. var arr = []
  655. this.arrZero.push(staffList[i].class_name)
  656. for(let i=0;i<this.arrZero.length;i++){
  657. if(this.arrZero[i]!=''){
  658. arr.push(this.arrZero[i])
  659. }
  660. }
  661. var countedNames = arr.reduce(function (allNames, name) {
  662. if (name in allNames) {
  663. allNames[name]++;
  664. }
  665. else {
  666. allNames[name] = 1;
  667. }
  668. return allNames;
  669. }, {});
  670. let objKey = Object.keys(countedNames)
  671. let objVal = Object.values(countedNames)
  672. var zeroStr = ''
  673. objKey.map((item,index) => {
  674. let objVal = Object.values(countedNames)
  675. zeroStr += item + objVal[index] + '\n'
  676. })
  677. sevenStr = zeroStr
  678. }
  679. if(staffList[i].schedule_week == 1){
  680. staffList[i].class_index = 1
  681. var arr = []
  682. this.arrOne.push(staffList[i].class_name)
  683. for(let i=0;i<this.arrOne.length;i++){
  684. if(this.arrOne[i]!=''){
  685. arr.push(this.arrOne[i])
  686. }
  687. }
  688. var countedNames = arr.reduce(function (allNames, name) {
  689. if (name in allNames) {
  690. allNames[name]++;
  691. }
  692. else {
  693. allNames[name] = 1;
  694. }
  695. return allNames;
  696. }, {});
  697. let objKey = Object.keys(countedNames)
  698. let objVal = Object.values(countedNames)
  699. let strOne = ''
  700. objKey.map((item,index) => {
  701. let objVal = Object.values(countedNames)
  702. strOne += item + objVal[index] + '\n'
  703. })
  704. oneStr = strOne
  705. }
  706. if(staffList[i].schedule_week == 2){
  707. staffList[i].class_index = 2
  708. var arr = []
  709. this.arrTwo.push(staffList[i].class_name)
  710. for(let i=0;i<this.arrTwo.length;i++){
  711. if(this.arrTwo[i]!=''){
  712. arr.push(this.arrTwo[i])
  713. }
  714. }
  715. var countedNames = arr.reduce(function (allNames, name) {
  716. if (name in allNames) {
  717. allNames[name]++;
  718. }
  719. else {
  720. allNames[name] = 1;
  721. }
  722. return allNames;
  723. }, {});
  724. let objKey = Object.keys(countedNames)
  725. let objVal = Object.values(countedNames)
  726. let strTwo = ''
  727. objKey.map((item,index) => {
  728. let objVal = Object.values(countedNames)
  729. strTwo += item + objVal[index] + '\n'
  730. })
  731. twoStr = strTwo
  732. }
  733. if(staffList[i].schedule_week == 3){
  734. staffList[i].class_index = 3
  735. var arr = []
  736. this.arrThree.push(staffList[i].class_name)
  737. for(let i=0;i<this.arrThree.length;i++){
  738. if(this.arrThree[i]!=''){
  739. arr.push(this.arrThree[i])
  740. }
  741. }
  742. var countedNames = arr.reduce(function (allNames, name) {
  743. if (name in allNames) {
  744. allNames[name]++;
  745. }
  746. else {
  747. allNames[name] = 1;
  748. }
  749. return allNames;
  750. }, {});
  751. let objKey = Object.keys(countedNames)
  752. let objVal = Object.values(countedNames)
  753. let strThree = ''
  754. objKey.map((item,index) => {
  755. let objVal = Object.values(countedNames)
  756. strThree += item + objVal[index] + '\n'
  757. })
  758. threeStr = strThree
  759. }
  760. if(staffList[i].schedule_week == 4){
  761. staffList[i].class_index = 4
  762. var arr = []
  763. this.arrFour.push(staffList[i].class_name)
  764. for(let i=0;i<this.arrFour.length;i++){
  765. if(this.arrFour[i]!=''){
  766. arr.push(this.arrFour[i])
  767. }
  768. }
  769. var countedNames = arr.reduce(function (allNames, name) {
  770. if (name in allNames) {
  771. allNames[name]++;
  772. }
  773. else {
  774. allNames[name] = 1;
  775. }
  776. return allNames;
  777. }, {});
  778. let objKey = Object.keys(countedNames)
  779. let objVal = Object.values(countedNames)
  780. let strFour = ''
  781. objKey.map((item,index) => {
  782. let objVal = Object.values(countedNames)
  783. strFour += item + objVal[index] + '\n'
  784. })
  785. fourStr = strFour
  786. }
  787. if(staffList[i].schedule_week == 5){
  788. staffList[i].class_index = 5
  789. var arr = []
  790. this.arrFive.push(staffList[i].class_name)
  791. for(let i=0;i<this.arrFive.length;i++){
  792. if(this.arrFive[i]!=''){
  793. arr.push(this.arrFive[i])
  794. }
  795. }
  796. var countedNames = arr.reduce(function (allNames, name) {
  797. if (name in allNames) {
  798. allNames[name]++;
  799. }
  800. else {
  801. allNames[name] = 1;
  802. }
  803. return allNames;
  804. }, {});
  805. let objKey = Object.keys(countedNames)
  806. let objVal = Object.values(countedNames)
  807. let strFive = ''
  808. objKey.map((item,index) => {
  809. let objVal = Object.values(countedNames)
  810. strFive += item + objVal[index] + '\n'
  811. })
  812. fiveStr = strFive
  813. }
  814. if(staffList[i].schedule_week == 6){
  815. staffList[i].class_index = 6
  816. var arr = []
  817. this.arrSix.push(staffList[i].class_name)
  818. for(let i=0;i<this.arrSix.length;i++){
  819. if(this.arrSix[i]!=''){
  820. arr.push(this.arrSix[i])
  821. }
  822. }
  823. var countedNames = arr.reduce(function (allNames, name) {
  824. if (name in allNames) {
  825. allNames[name]++;
  826. }
  827. else {
  828. allNames[name] = 1;
  829. }
  830. return allNames;
  831. }, {});
  832. let objKey = Object.keys(countedNames)
  833. let objVal = Object.values(countedNames)
  834. let strSix = ''
  835. objKey.map((item,index) => {
  836. let objVal = Object.values(countedNames)
  837. strSix += item + objVal[index] + '\n'
  838. })
  839. sixStr = strSix
  840. }
  841. }
  842. let tempArr = [], newArr = []
  843. for (let i = 0; i < staffList.length; i++) {
  844. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  845. newArr.push({
  846. user_name: staffList[i].user_name,
  847. admin_user_id:staffList[i].admin_user_id,
  848. user_type:staffList[i].doctor_type,
  849. is_sort:staffList[i].is_sort,
  850. sort:staffList[i].sort,
  851. list: [{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,class_attributes:staffList[i].class_attributes}]
  852. })
  853. tempArr.push(staffList[i].user_name);
  854. } else {
  855. for (let j = 0; j < newArr.length; j++) {
  856. if (newArr[j].user_name == staffList[i].user_name) {
  857. 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,class_attributes:staffList[i].class_attributes})
  858. }
  859. }
  860. }
  861. }
  862. let arr = [...newArr]
  863. let newNurse = []
  864. let newDoctor = []
  865. arr.map(item => {
  866. if(item.user_type == 2){
  867. newDoctor.push(item)
  868. }
  869. if(item.user_type == 3){
  870. newNurse.push(item)
  871. }
  872. })
  873. //护士
  874. newNurse.sort(this.compare('admin_user_id'))
  875. let newNurseTableData = []
  876. this.nurseTableData.map(item => {
  877. if(item.is_sort == 1){
  878. newNurseTableData.push(item)
  879. }
  880. })
  881. newNurseTableData.sort(this.compare('admin_user_id'))
  882. newNurseTableData.map((item,index) => {
  883. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  884. }else{
  885. newNurse.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  886. }
  887. })
  888. newNurse.sort(this.compare('sort'))
  889. //医生
  890. newDoctor.sort(this.compare('admin_user_id'))
  891. let newDoctorTableData = []
  892. this.doctorTableData.map(item => {
  893. if(item.is_sort == 1){
  894. newDoctorTableData.push(item)
  895. }
  896. })
  897. newDoctorTableData.sort(this.compare('admin_user_id'))
  898. newDoctorTableData.map((item,index) => {
  899. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  900. }else{
  901. newDoctor.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  902. }
  903. })
  904. newDoctor.sort(this.compare('sort'))
  905. // arr.sort(this.compare('admin_user_id'))
  906. // this.doctorlist.sort(this.compare('admin_user_id'))
  907. // this.doctorlist.forEach((item, index) => {
  908. //   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  909. //   }else{
  910. //     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  911. //   }
  912. // })
  913. // arr.sort(this.compare('user_type'))
  914. let arr2 = []
  915. arr2.push({class_name:oneStr,schedule_week:1})
  916. arr2.push({class_name:twoStr,schedule_week:2})
  917. arr2.push({class_name:threeStr,schedule_week:3})
  918. arr2.push({class_name:fourStr,schedule_week:4})
  919. arr2.push({class_name:fiveStr,schedule_week:5})
  920. arr2.push({class_name:sixStr,schedule_week:6})
  921. arr2.push({class_name:zeroStr,schedule_week:0})
  922. var obj = {}
  923. obj.admin_user_id = "1000000"
  924. obj.user_name = "合计"
  925. obj.user_type = 10
  926. obj.list = arr2
  927. arr.push(obj)
  928. let data = []
  929. data.push(...newNurse)
  930. data.push(...newDoctor)
  931. data.push(obj)
  932. this.tableData = data
  933. console.log("表哥3333333333",this.tableData)
  934. }
  935. })
  936. },
  937. getClass(name,index){
  938. if(name != undefined){
  939. let newClass = '';
  940. this.tableData.map(item => {
  941. if(item.user_name == name){
  942. if(item.list){
  943. item.list.map(it => {
  944. if(it.schedule_week == index){
  945. newClass = it.class_name
  946. }
  947. })
  948. }
  949. }
  950. })
  951. return newClass
  952. }
  953. },
  954. getClassAttributes(name,index){
  955. if(name != undefined){
  956. let newClass = '';
  957. this.tableData.map(item => {
  958. if(item.user_name == name){
  959. if(item.list){
  960. item.list.map(it => {
  961. if(it.schedule_week == index){
  962. newClass = it.class_attributes
  963. }
  964. })
  965. }
  966. }
  967. })
  968. return newClass
  969. }
  970. },
  971. unique(arr) {
  972. const res = new Map();
  973. return arr.filter((arr) => !res.has(arr.admin_user_id) && res.set(arr.admin_user_id, 1))
  974. },
  975. //获取上一周下一周的排班数据
  976. getNextWeekList(){
  977. const params = {
  978. start_time:this.getTimestamp(this.weekDayArr[0]),
  979. end_time:this.getTimestamp(this.weekDayArr[6])
  980. }
  981. getNextWeekList(params).then(response=>{
  982. if(response.data.state == 1){
  983. var staffList = response.data.data.staffList
  984. // console.log("上下周数据",staffList)
  985. var sevenStr = ""
  986. var oneStr = ""
  987. var twoStr = ""
  988. var threeStr = ""
  989. var fourStr = ""
  990. var fiveStr = ""
  991. var sixStr = ""
  992. this.arrZero = []
  993. this.arrOne = []
  994. this.arrTwo = []
  995. this.arrThree = []
  996. this.arrFour = []
  997. this.arrFive = []
  998. this.arrSix = []
  999. for(let i=0;i<staffList.length;i++){
  1000. if(staffList[i].schedule_week == 0){
  1001. staffList[i].class_index = 0
  1002. var arr = []
  1003. this.arrZero.push(staffList[i].class_name)
  1004. for(let i=0;i<this.arrZero.length;i++){
  1005. if(this.arrZero[i]!=''){
  1006. arr.push(this.arrZero[i])
  1007. }
  1008. }
  1009. var countedNames = arr.reduce(function (allNames, name) {
  1010. if (name in allNames) {
  1011. allNames[name]++;
  1012. }
  1013. else {
  1014. allNames[name] = 1;
  1015. }
  1016. return allNames;
  1017. }, {});
  1018. let objKey = Object.keys(countedNames)
  1019. let objVal = Object.values(countedNames)
  1020. var zeroStr = ''
  1021. objKey.map((item,index) => {
  1022. let objVal = Object.values(countedNames)
  1023. zeroStr += item + objVal[index] + '\n'
  1024. })
  1025. sevenStr = zeroStr
  1026. }
  1027. if(staffList[i].schedule_week == 1){
  1028. staffList[i].class_index = 1
  1029. var arr = []
  1030. this.arrOne.push(staffList[i].class_name)
  1031. for(let i=0;i<this.arrOne.length;i++){
  1032. if(this.arrOne[i]!=''){
  1033. arr.push(this.arrOne[i])
  1034. }
  1035. }
  1036. var countedNames = arr.reduce(function (allNames, name) {
  1037. if (name in allNames) {
  1038. allNames[name]++;
  1039. }
  1040. else {
  1041. allNames[name] = 1;
  1042. }
  1043. return allNames;
  1044. }, {});
  1045. let objKey = Object.keys(countedNames)
  1046. let objVal = Object.values(countedNames)
  1047. let strOne = ''
  1048. objKey.map((item,index) => {
  1049. let objVal = Object.values(countedNames)
  1050. strOne += item + objVal[index] + '\n'
  1051. })
  1052. oneStr = strOne
  1053. }
  1054. if(staffList[i].schedule_week == 2){
  1055. staffList[i].class_index = 2
  1056. var arr = []
  1057. this.arrTwo.push(staffList[i].class_name)
  1058. for(let i=0;i<this.arrTwo.length;i++){
  1059. if(this.arrTwo[i]!=''){
  1060. arr.push(this.arrTwo[i])
  1061. }
  1062. }
  1063. var countedNames = arr.reduce(function (allNames, name) {
  1064. if (name in allNames) {
  1065. allNames[name]++;
  1066. }
  1067. else {
  1068. allNames[name] = 1;
  1069. }
  1070. return allNames;
  1071. }, {});
  1072. let objKey = Object.keys(countedNames)
  1073. let objVal = Object.values(countedNames)
  1074. let strTwo = ''
  1075. objKey.map((item,index) => {
  1076. let objVal = Object.values(countedNames)
  1077. strTwo += item + objVal[index] + '\n'
  1078. })
  1079. twoStr = strTwo
  1080. }
  1081. if(staffList[i].schedule_week == 3){
  1082. staffList[i].class_index = 3
  1083. var arr = []
  1084. this.arrThree.push(staffList[i].class_name)
  1085. for(let i=0;i<this.arrThree.length;i++){
  1086. if(this.arrThree[i]!=''){
  1087. arr.push(this.arrThree[i])
  1088. }
  1089. }
  1090. var countedNames = arr.reduce(function (allNames, name) {
  1091. if (name in allNames) {
  1092. allNames[name]++;
  1093. }
  1094. else {
  1095. allNames[name] = 1;
  1096. }
  1097. return allNames;
  1098. }, {});
  1099. let objKey = Object.keys(countedNames)
  1100. let objVal = Object.values(countedNames)
  1101. let strThree = ''
  1102. objKey.map((item,index) => {
  1103. let objVal = Object.values(countedNames)
  1104. strThree += item + objVal[index] + '\n'
  1105. })
  1106. threeStr = strThree
  1107. }
  1108. if(staffList[i].schedule_week == 4){
  1109. staffList[i].class_index = 4
  1110. var arr = []
  1111. this.arrFour.push(staffList[i].class_name)
  1112. for(let i=0;i<this.arrFour.length;i++){
  1113. if(this.arrFour[i]!=''){
  1114. arr.push(this.arrFour[i])
  1115. }
  1116. }
  1117. var countedNames = arr.reduce(function (allNames, name) {
  1118. if (name in allNames) {
  1119. allNames[name]++;
  1120. }
  1121. else {
  1122. allNames[name] = 1;
  1123. }
  1124. return allNames;
  1125. }, {});
  1126. let objKey = Object.keys(countedNames)
  1127. let objVal = Object.values(countedNames)
  1128. let strFour = ''
  1129. objKey.map((item,index) => {
  1130. let objVal = Object.values(countedNames)
  1131. strFour += item + objVal[index] + '\n'
  1132. })
  1133. fourStr = strFour
  1134. }
  1135. if(staffList[i].schedule_week == 5){
  1136. staffList[i].class_index = 5
  1137. var arr = []
  1138. this.arrFive.push(staffList[i].class_name)
  1139. for(let i=0;i<this.arrFive.length;i++){
  1140. if(this.arrFive[i]!=''){
  1141. arr.push(this.arrFive[i])
  1142. }
  1143. }
  1144. var countedNames = arr.reduce(function (allNames, name) {
  1145. if (name in allNames) {
  1146. allNames[name]++;
  1147. }
  1148. else {
  1149. allNames[name] = 1;
  1150. }
  1151. return allNames;
  1152. }, {});
  1153. let objKey = Object.keys(countedNames)
  1154. let objVal = Object.values(countedNames)
  1155. let strFive = ''
  1156. objKey.map((item,index) => {
  1157. let objVal = Object.values(countedNames)
  1158. strFive += item + objVal[index] + '\n'
  1159. })
  1160. fiveStr = strFive
  1161. }
  1162. if(staffList[i].schedule_week == 6){
  1163. staffList[i].class_index = 6
  1164. var arr = []
  1165. this.arrSix.push(staffList[i].class_name)
  1166. for(let i=0;i<this.arrSix.length;i++){
  1167. if(this.arrSix[i]!=''){
  1168. arr.push(this.arrSix[i])
  1169. }
  1170. }
  1171. var countedNames = arr.reduce(function (allNames, name) {
  1172. if (name in allNames) {
  1173. allNames[name]++;
  1174. }
  1175. else {
  1176. allNames[name] = 1;
  1177. }
  1178. return allNames;
  1179. }, {});
  1180. let objKey = Object.keys(countedNames)
  1181. let objVal = Object.values(countedNames)
  1182. let strSix = ''
  1183. objKey.map((item,index) => {
  1184. let objVal = Object.values(countedNames)
  1185. strSix += item + objVal[index] + '\n'
  1186. })
  1187. sixStr = strSix
  1188. }
  1189. }
  1190. let tempArr = [], newArr = []
  1191. for (let i = 0; i < staffList.length; i++) {
  1192. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1193. newArr.push({
  1194. user_name: staffList[i].user_name,
  1195. admin_user_id:staffList[i].admin_user_id,
  1196. user_type:staffList[i].doctor_type,
  1197. is_sort:staffList[i].is_sort,
  1198. sort:staffList[i].sort,
  1199. list: [{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,class_attributes:staffList[i].class_attributes}]
  1200. })
  1201. tempArr.push(staffList[i].user_name);
  1202. } else {
  1203. for (let j = 0; j < newArr.length; j++) {
  1204. if (newArr[j].user_name == staffList[i].user_name) {
  1205. 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,class_attributes:staffList[i].class_attributes})
  1206. }
  1207. }
  1208. }
  1209. }
  1210. let arr = [...newArr]
  1211. let newNurse = []
  1212. let newDoctor = []
  1213. arr.map(item => {
  1214. if(item.user_type == 2){
  1215. newDoctor.push(item)
  1216. }
  1217. if(item.user_type == 3){
  1218. newNurse.push(item)
  1219. }
  1220. })
  1221. //护士
  1222. newNurse.sort(this.compare('admin_user_id'))
  1223. let newNurseTableData = []
  1224. this.nurseTableData.map(item => {
  1225. if(item.is_sort == 1){
  1226. newNurseTableData.push(item)
  1227. }
  1228. })
  1229. newNurseTableData.sort(this.compare('admin_user_id'))
  1230. newNurseTableData.map((item,index) => {
  1231. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1232. }else{
  1233. newNurse.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1234. }
  1235. })
  1236. newNurse.sort(this.compare('sort'))
  1237. //医生
  1238. newDoctor.sort(this.compare('admin_user_id'))
  1239. let newDoctorTableData = []
  1240. this.doctorTableData.map(item => {
  1241. if(item.is_sort == 1){
  1242. newDoctorTableData.push(item)
  1243. }
  1244. })
  1245. newDoctorTableData.sort(this.compare('admin_user_id'))
  1246. newDoctorTableData.map((item,index) => {
  1247. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1248. }else{
  1249. newDoctor.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1250. }
  1251. })
  1252. newDoctor.sort(this.compare('sort'))
  1253. // arr.sort(this.compare('admin_user_id'))
  1254. // this.doctorlist.sort(this.compare('admin_user_id'))
  1255. // this.doctorlist.forEach((item, index) => {
  1256. //   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1257. //   }else{
  1258. //     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  1259. //   }
  1260. // })
  1261. // arr.sort(this.compare('user_type'))
  1262. let arr2 = []
  1263. arr2.push({class_name:oneStr,schedule_week:1})
  1264. arr2.push({class_name:twoStr,schedule_week:2})
  1265. arr2.push({class_name:threeStr,schedule_week:3})
  1266. arr2.push({class_name:fourStr,schedule_week:4})
  1267. arr2.push({class_name:fiveStr,schedule_week:5})
  1268. arr2.push({class_name:sixStr,schedule_week:6})
  1269. arr2.push({class_name:zeroStr,schedule_week:0})
  1270. var obj = {}
  1271. obj.admin_user_id = "1000000"
  1272. obj.user_name = "合计"
  1273. obj.user_type = 10
  1274. obj.list = arr2
  1275. arr.push(obj)
  1276. let data = []
  1277. data.push(...newNurse)
  1278. data.push(...newDoctor)
  1279. data.push(obj)
  1280. this.tableData = data
  1281. }
  1282. })
  1283. },
  1284. changeOption(id){
  1285. const params = {
  1286. start_time:this.getTimestamp(this.weekDayArr[0]),
  1287. end_time:this.getTimestamp(this.weekDayArr[6]),
  1288. doctor_id:id
  1289. }
  1290. getScheduleByDoctorId(params).then(response=>{
  1291. if(response.data.state == 1){
  1292. var staffList = response.data.data.staffList
  1293. // console.log("staffList",staffList)
  1294. var sevenStr = ""
  1295. var oneStr = ""
  1296. var twoStr = ""
  1297. var threeStr = ""
  1298. var fourStr = ""
  1299. var fiveStr = ""
  1300. var sixStr = ""
  1301. this.arrZero = []
  1302. this.arrOne = []
  1303. this.arrTwo = []
  1304. this.arrThree = []
  1305. this.arrFour = []
  1306. this.arrFive = []
  1307. this.arrSix = []
  1308. for(let i=0;i<staffList.length;i++){
  1309. if(staffList[i].schedule_week == 0){
  1310. staffList[i].class_index = 0
  1311. var arr = []
  1312. this.arrZero.push(staffList[i].class_name)
  1313. for(let i=0;i<this.arrZero.length;i++){
  1314. if(this.arrZero[i]!=''){
  1315. arr.push(this.arrZero[i])
  1316. }
  1317. }
  1318. var countedNames = arr.reduce(function (allNames, name) {
  1319. if (name in allNames) {
  1320. allNames[name]++;
  1321. }
  1322. else {
  1323. allNames[name] = 1;
  1324. }
  1325. return allNames;
  1326. }, {});
  1327. let objKey = Object.keys(countedNames)
  1328. let objVal = Object.values(countedNames)
  1329. var zeroStr = ''
  1330. objKey.map((item,index) => {
  1331. let objVal = Object.values(countedNames)
  1332. zeroStr += item + objVal[index] + '\n'
  1333. })
  1334. sevenStr = zeroStr
  1335. }
  1336. if(staffList[i].schedule_week == 1){
  1337. staffList[i].class_index = 1
  1338. var arr = []
  1339. this.arrOne.push(staffList[i].class_name)
  1340. for(let i=0;i<this.arrOne.length;i++){
  1341. if(this.arrOne[i]!=''){
  1342. arr.push(this.arrOne[i])
  1343. }
  1344. }
  1345. var countedNames = arr.reduce(function (allNames, name) {
  1346. if (name in allNames) {
  1347. allNames[name]++;
  1348. }
  1349. else {
  1350. allNames[name] = 1;
  1351. }
  1352. return allNames;
  1353. }, {});
  1354. let objKey = Object.keys(countedNames)
  1355. let objVal = Object.values(countedNames)
  1356. let strOne = ''
  1357. objKey.map((item,index) => {
  1358. let objVal = Object.values(countedNames)
  1359. strOne += item + objVal[index] + '\n'
  1360. })
  1361. oneStr = strOne
  1362. }
  1363. if(staffList[i].schedule_week == 2){
  1364. staffList[i].class_index = 2
  1365. var arr = []
  1366. this.arrTwo.push(staffList[i].class_name)
  1367. for(let i=0;i<this.arrTwo.length;i++){
  1368. if(this.arrTwo[i]!=''){
  1369. arr.push(this.arrTwo[i])
  1370. }
  1371. }
  1372. var countedNames = arr.reduce(function (allNames, name) {
  1373. if (name in allNames) {
  1374. allNames[name]++;
  1375. }
  1376. else {
  1377. allNames[name] = 1;
  1378. }
  1379. return allNames;
  1380. }, {});
  1381. let objKey = Object.keys(countedNames)
  1382. let objVal = Object.values(countedNames)
  1383. let strTwo = ''
  1384. objKey.map((item,index) => {
  1385. let objVal = Object.values(countedNames)
  1386. strTwo += item + objVal[index] + '\n'
  1387. })
  1388. twoStr = strTwo
  1389. }
  1390. if(staffList[i].schedule_week == 3){
  1391. staffList[i].class_index = 3
  1392. var arr = []
  1393. this.arrThree.push(staffList[i].class_name)
  1394. for(let i=0;i<this.arrThree.length;i++){
  1395. if(this.arrThree[i]!=''){
  1396. arr.push(this.arrThree[i])
  1397. }
  1398. }
  1399. var countedNames = arr.reduce(function (allNames, name) {
  1400. if (name in allNames) {
  1401. allNames[name]++;
  1402. }
  1403. else {
  1404. allNames[name] = 1;
  1405. }
  1406. return allNames;
  1407. }, {});
  1408. let objKey = Object.keys(countedNames)
  1409. let objVal = Object.values(countedNames)
  1410. let strThree = ''
  1411. objKey.map((item,index) => {
  1412. let objVal = Object.values(countedNames)
  1413. strThree += item + objVal[index] + '\n'
  1414. })
  1415. threeStr = strThree
  1416. }
  1417. if(staffList[i].schedule_week == 4){
  1418. staffList[i].class_index = 4
  1419. var arr = []
  1420. this.arrFour.push(staffList[i].class_name)
  1421. for(let i=0;i<this.arrFour.length;i++){
  1422. if(this.arrFour[i]!=''){
  1423. arr.push(this.arrFour[i])
  1424. }
  1425. }
  1426. var countedNames = arr.reduce(function (allNames, name) {
  1427. if (name in allNames) {
  1428. allNames[name]++;
  1429. }
  1430. else {
  1431. allNames[name] = 1;
  1432. }
  1433. return allNames;
  1434. }, {});
  1435. let objKey = Object.keys(countedNames)
  1436. let objVal = Object.values(countedNames)
  1437. let strFour = ''
  1438. objKey.map((item,index) => {
  1439. let objVal = Object.values(countedNames)
  1440. strFour += item + objVal[index] + '\n'
  1441. })
  1442. fourStr = strFour
  1443. }
  1444. if(staffList[i].schedule_week == 5){
  1445. staffList[i].class_index = 5
  1446. var arr = []
  1447. this.arrFive.push(staffList[i].class_name)
  1448. for(let i=0;i<this.arrFive.length;i++){
  1449. if(this.arrFive[i]!=''){
  1450. arr.push(this.arrFive[i])
  1451. }
  1452. }
  1453. var countedNames = arr.reduce(function (allNames, name) {
  1454. if (name in allNames) {
  1455. allNames[name]++;
  1456. }
  1457. else {
  1458. allNames[name] = 1;
  1459. }
  1460. return allNames;
  1461. }, {});
  1462. let objKey = Object.keys(countedNames)
  1463. let objVal = Object.values(countedNames)
  1464. let strFive = ''
  1465. objKey.map((item,index) => {
  1466. let objVal = Object.values(countedNames)
  1467. strFive += item + objVal[index] + '\n'
  1468. })
  1469. fiveStr = strFive
  1470. }
  1471. if(staffList[i].schedule_week == 6){
  1472. staffList[i].class_index = 6
  1473. var arr = []
  1474. this.arrSix.push(staffList[i].class_name)
  1475. for(let i=0;i<this.arrSix.length;i++){
  1476. if(this.arrSix[i]!=''){
  1477. arr.push(this.arrSix[i])
  1478. }
  1479. }
  1480. var countedNames = arr.reduce(function (allNames, name) {
  1481. if (name in allNames) {
  1482. allNames[name]++;
  1483. }
  1484. else {
  1485. allNames[name] = 1;
  1486. }
  1487. return allNames;
  1488. }, {});
  1489. let objKey = Object.keys(countedNames)
  1490. let objVal = Object.values(countedNames)
  1491. let strSix = ''
  1492. objKey.map((item,index) => {
  1493. let objVal = Object.values(countedNames)
  1494. strSix += item + objVal[index] + '\n'
  1495. })
  1496. sixStr = strSix
  1497. }
  1498. }
  1499. let tempArr = [], newArr = []
  1500. for (let i = 0; i < staffList.length; i++) {
  1501. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1502. newArr.push({
  1503. user_name: staffList[i].user_name,
  1504. admin_user_id:staffList[i].admin_user_id,
  1505. user_type:staffList[i].doctor_type,
  1506. is_sort:staffList[i].is_sort,
  1507. sort:staffList[i].sort,
  1508. list: [{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,class_attributes:staffList[i].class_attributes}]
  1509. })
  1510. tempArr.push(staffList[i].user_name);
  1511. } else {
  1512. for (let j = 0; j < newArr.length; j++) {
  1513. if (newArr[j].user_name == staffList[i].user_name) {
  1514. 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,class_attributes:staffList[i].class_attributes})
  1515. }
  1516. }
  1517. }
  1518. }
  1519. let arr = [...newArr]
  1520. let newNurse = []
  1521. let newDoctor = []
  1522. arr.map(item => {
  1523. if(item.user_type == 2){
  1524. newDoctor.push(item)
  1525. }
  1526. if(item.user_type == 3){
  1527. newNurse.push(item)
  1528. }
  1529. })
  1530. if(id == 0){
  1531. //护士
  1532. newNurse.sort(this.compare('admin_user_id'))
  1533. let newNurseTableData = []
  1534. this.nurseTableData.map(item => {
  1535. if(item.is_sort == 1){
  1536. newNurseTableData.push(item)
  1537. }
  1538. })
  1539. newNurseTableData.sort(this.compare('admin_user_id'))
  1540. newNurseTableData.map((item,index) => {
  1541. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1542. }else{
  1543. newNurse.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1544. }
  1545. })
  1546. newNurse.sort(this.compare('sort'))
  1547. //医生
  1548. newDoctor.sort(this.compare('admin_user_id'))
  1549. let newDoctorTableData = []
  1550. this.doctorTableData.map(item => {
  1551. if(item.is_sort == 1){
  1552. newDoctorTableData.push(item)
  1553. }
  1554. })
  1555. newDoctorTableData.sort(this.compare('admin_user_id'))
  1556. newDoctorTableData.map((item,index) => {
  1557. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1558. }else{
  1559. newDoctor.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1560. }
  1561. })
  1562. newDoctor.sort(this.compare('sort'))
  1563. // let data = []
  1564. // data.push(...newNurse)
  1565. // data.push(...newDoctor)
  1566. // this.tableData = data
  1567. let arr2 = []
  1568. arr2.push({class_name:oneStr,schedule_week:1})
  1569. arr2.push({class_name:twoStr,schedule_week:2})
  1570. arr2.push({class_name:threeStr,schedule_week:3})
  1571. arr2.push({class_name:fourStr,schedule_week:4})
  1572. arr2.push({class_name:fiveStr,schedule_week:5})
  1573. arr2.push({class_name:sixStr,schedule_week:6})
  1574. arr2.push({class_name:zeroStr,schedule_week:0})
  1575. var obj = {}
  1576. obj.admin_user_id = "1000000"
  1577. obj.user_name = "合计"
  1578. obj.user_type = 10
  1579. obj.list = arr2
  1580. arr.push(obj)
  1581. let data = []
  1582. data.push(...newNurse)
  1583. data.push(...newDoctor)
  1584. data.push(obj)
  1585. this.tableData = data
  1586. }
  1587. if(id == 2){
  1588. newDoctor.sort(this.compare('admin_user_id'))
  1589. let newDoctorTableData = []
  1590. this.doctorTableData.map(item => {
  1591. if(item.is_sort == 1){
  1592. newDoctorTableData.push(item)
  1593. }
  1594. })
  1595. newDoctorTableData.sort(this.compare('admin_user_id'))
  1596. newDoctorTableData.map((item,index) => {
  1597. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1598. }else{
  1599. newDoctor.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1600. }
  1601. })
  1602. newDoctor.sort(this.compare('sort'))
  1603. // this.tableData = newDoctor
  1604. let arr2 = []
  1605. arr2.push({class_name:oneStr,schedule_week:1})
  1606. arr2.push({class_name:twoStr,schedule_week:2})
  1607. arr2.push({class_name:threeStr,schedule_week:3})
  1608. arr2.push({class_name:fourStr,schedule_week:4})
  1609. arr2.push({class_name:fiveStr,schedule_week:5})
  1610. arr2.push({class_name:sixStr,schedule_week:6})
  1611. arr2.push({class_name:zeroStr,schedule_week:0})
  1612. var obj = {}
  1613. obj.admin_user_id = "1000000"
  1614. obj.user_name = "合计"
  1615. obj.user_type = 10
  1616. obj.list = arr2
  1617. arr.push(obj)
  1618. let data = []
  1619. data.push(...newDoctor)
  1620. data.push(obj)
  1621. this.tableData = data
  1622. }
  1623. if(id == 3){
  1624. newNurse.sort(this.compare('admin_user_id'))
  1625. let newNurseTableData = []
  1626. this.nurseTableData.map(item => {
  1627. if(item.is_sort == 1){
  1628. newNurseTableData.push(item)
  1629. }
  1630. })
  1631. newNurseTableData.sort(this.compare('admin_user_id'))
  1632. newNurseTableData.map((item,index) => {
  1633. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1634. }else{
  1635. newNurse.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type,is_sort:item.is_sort,sort:item.sort})
  1636. }
  1637. })
  1638. newNurse.sort(this.compare('sort'))
  1639. // this.tableData = newNurse
  1640. let arr2 = []
  1641. arr2.push({class_name:oneStr,schedule_week:1})
  1642. arr2.push({class_name:twoStr,schedule_week:2})
  1643. arr2.push({class_name:threeStr,schedule_week:3})
  1644. arr2.push({class_name:fourStr,schedule_week:4})
  1645. arr2.push({class_name:fiveStr,schedule_week:5})
  1646. arr2.push({class_name:sixStr,schedule_week:6})
  1647. arr2.push({class_name:zeroStr,schedule_week:0})
  1648. var obj = {}
  1649. obj.admin_user_id = "1000000"
  1650. obj.user_name = "合计"
  1651. obj.user_type = 10
  1652. obj.list = arr2
  1653. arr.push(obj)
  1654. let data = []
  1655. data.push(...newNurse)
  1656. data.push(obj)
  1657. this.tableData = data
  1658. }
  1659. }
  1660. })
  1661. },
  1662. toSearch(){
  1663. const params = {
  1664. user_name: this.keywords,
  1665. start_time:this.getTimestamp(this.weekDayArr[0]),
  1666. end_time:this.getTimestamp(this.weekDayArr[6])
  1667. }
  1668. toSearchScheduleList(params).then(response=>{
  1669. if(response.data.state == 1){
  1670. var staffList = response.data.data.staffList
  1671. // console.log("搜索",staffList)
  1672. let tempArr = [], newArr = []
  1673. for (let i = 0; i < staffList.length; i++) {
  1674. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1675. newArr.push({
  1676. user_name: staffList[i].user_name,
  1677. admin_user_id:staffList[i].admin_user_id,
  1678. list: [{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,class_attributes:staffList[i].class_attributes}]
  1679. })
  1680. tempArr.push(staffList[i].user_name);
  1681. } else {
  1682. for (let j = 0; j < newArr.length; j++) {
  1683. if (newArr[j].user_name == staffList[i].user_name) {
  1684. 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,class_attributes:staffList[i].class_attributes})
  1685. }
  1686. }
  1687. }
  1688. }
  1689. if(this.keywords != ''){
  1690. this.tableData = newArr
  1691. }else{
  1692. let arr = [...newArr]
  1693. arr.sort(this.compare('admin_user_id'))
  1694. this.doctorlist.sort(this.compare('admin_user_id'))
  1695. this.doctorlist.forEach((item, index) => {
  1696.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1697.   }else{
  1698.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: []})
  1699.     // console.log("arr",arr)
  1700.   }
  1701. })
  1702. this.tableData = arr
  1703. }
  1704. }
  1705. })
  1706. },
  1707. DeleteStaffSchedule(){
  1708. const params = {
  1709. start_time:this.getTimestamp(this.weekDayArr[0]),
  1710. end_time:this.getTimestamp(this.weekDayArr[6])
  1711. }
  1712. this.$confirm(
  1713. '是否要清除当周排班? <br>清除后,信息将无法恢复',
  1714. '删除提示',
  1715. {
  1716. dangerouslyUseHTMLString: true,
  1717. confirmButtonText: '确定',
  1718. cancelButtonText: '取消',
  1719. type: 'warning'
  1720. }
  1721. ).then(()=>{
  1722. DeleteStaffSchedule(params).then(response=>{
  1723. if(response.data.state == 1){
  1724. var msg = response.data.data.msg
  1725. this.$message.success("清除成功")
  1726. this.getStaffScheduleList()
  1727. }
  1728. })
  1729. })
  1730. },
  1731. copyStaffSchedule(){
  1732. this.newVisible = true
  1733. const params = {
  1734. start_time:this.getTimestamp(this.weekDayArr[0]),
  1735. end_time:this.getTimestamp(this.weekDayArr[6])
  1736. }
  1737. copyStaffSchedule(params).then(response=>{
  1738. if(response.data.state == 1){
  1739. var msg = response.data.data.msg
  1740. console.log("msg",msg)
  1741. this.$message.success("复制成功")
  1742. }else{
  1743. this.$message.error("排班已存在")
  1744. }
  1745. })
  1746. },
  1747. toContinuous(){
  1748. var is_status = 0
  1749. if(this.isChecked == false){
  1750. is_status = 0
  1751. }
  1752. if(this.isChecked == true){
  1753. is_status = 1
  1754. }
  1755. const params = {
  1756. is_status:is_status
  1757. }
  1758. UpdateContinusSchedule(params).then(response=>{
  1759. if(response.data.state == 1){
  1760. var schedule = response.data.data.schedule
  1761. this.$message.success("保存成功")
  1762. }
  1763. })
  1764. },
  1765. setDate1 (date) {
  1766. var week = date.getDay() - 1
  1767. date = this.addDate(date, week * -1)
  1768. this.currentDate = new Date(date)
  1769. let arr1 = []
  1770. for (var i = 0; i < this.clen; i++) {
  1771. arr1.push(this.formatDate(i == 0 ? date : this.addDate(date, 1)))
  1772. }
  1773. this.weekList.push(arr1)
  1774. let num = this.weekNum
  1775. this.currentFirstDate1 = num + 1
  1776. },
  1777. submitAction(formName){
  1778. var label = ""
  1779. for(let i=0;i<this.timeOptions.length;i++){
  1780. if(this.form.copyWeek == this.timeOptions[i].value){
  1781. label = this.timeOptions[i].label
  1782. }
  1783. }
  1784. var start = label.split('~')
  1785. var copy_startime = this.getTimestamp(start[0])
  1786. var copy_endtime = this.getTimestamp(start[1])
  1787. const params = {
  1788. start_time:this.getTimestamp(this.weekDayArr[0]),
  1789. end_time:this.getTimestamp(this.weekDayArr[6]),
  1790. copy_startime:copy_startime,
  1791. copy_endtime:copy_endtime,
  1792. }
  1793. this.$refs[formName].validate(valid=>{
  1794. if(valid){
  1795. copyStaffSchedule(params).then(response=>{
  1796. if(response.data.state == 1){
  1797. var msg = response.data.data.msg
  1798. this.$message.success("复制成功")
  1799. this.newVisible = false
  1800. }else{
  1801. this.$message.error("排班已存在")
  1802. }
  1803. })
  1804. }
  1805. })
  1806. },
  1807. compare(property){
  1808. return function(a,b){
  1809. var value1 = a[property];
  1810. var value2 = b[property];
  1811. return value2 - value1;
  1812. }
  1813. },
  1814. tableCellStyle (row, rowIndex, column) {
  1815. var week = (row.column.label).split('');
  1816. var weeks = 0
  1817. if (week.length == 13) {
  1818. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]
  1819. }
  1820. if (week.length == 14) {
  1821. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]+week[12]
  1822. }
  1823. var weekdate = this.getTimestamp(weeks)
  1824. if(weekdate < this.timeNow){
  1825. return 'background-color:#e5e5e5;'
  1826. }
  1827. },
  1828. setting(){
  1829. this.nurseVisible = true
  1830. },
  1831. _close: function(done) {
  1832. done();
  1833. },
  1834. changeSort(val){
  1835. console.log('val',val)
  1836. const params = {
  1837. sort:parseInt(val.sort),
  1838. id:val.id,
  1839. }
  1840. console.log("params",params)
  1841. SaveNurseSort(params).then(response=>{
  1842. if(response.data.state == 1){
  1843. var role = response.data.data.role
  1844. this.$message.success("保存成功")
  1845. this.getDoctorList()
  1846. }
  1847. })
  1848. },
  1849. changeRadio(val){
  1850. console.log("val",val)
  1851. const params = {
  1852. id:val.id,
  1853. is_sort:val.is_sort,
  1854. }
  1855. SaveIsSchedule(params).then(response=>{
  1856. if(response.data.state == 1){
  1857. var role = response.data.data.role
  1858. this.$message.success("保存成功")
  1859. this.getDoctorList()
  1860. }
  1861. })
  1862. },
  1863. toExport(){
  1864. this.exportDialogVisible = true
  1865. },
  1866. getTimestamp(time) { //把时间日期转成时间戳
  1867. return (new Date(time)).getTime() / 1000
  1868. },
  1869. exportList(){
  1870. import('@/vendor/Export2Excel').then(excel => {
  1871. for(let i=0;i<this.tableData.length;i++){
  1872. this.tableData[i].monday = this.getClass(this.tableData[i].user_name,1)
  1873. this.tableData[i].tuesday = this.getClass(this.tableData[i].user_name,2)
  1874. this.tableData[i].wednesday = this.getClass(this.tableData[i].user_name,3)
  1875. this.tableData[i].thursday = this.getClass(this.tableData[i].user_name,4)
  1876. this.tableData[i].friday = this.getClass(this.tableData[i].user_name,5)
  1877. this.tableData[i].saturday = this.getClass(this.tableData[i].user_name,6)
  1878. this.tableData[i].weekday = this.getClass(this.tableData[i].user_name,0)
  1879. }
  1880. console.log("this.table",this.tableData)
  1881. const tHeader = ['医护姓名', '周一'+"("+this.weekDayArr[0]+")" , '周二'+"("+this.weekDayArr[1]+")", '周三'+"("+this.weekDayArr[2]+")" , '周四'+"("+this.weekDayArr[3]+")" , '周五'+"("+this.weekDayArr[4]+")" , '周六'+"("+this.weekDayArr[5]+")",'周日'+"("+this.weekDayArr[6]+")"]
  1882. const filterVal = ['user_name', 'monday', 'tuesday','wednesday','thursday','friday','saturday','weekday']
  1883. const data = this.formatJson(filterVal,this.tableData)
  1884. console.log("data",data)
  1885. excel.export_json_to_excel({
  1886. header: tHeader,
  1887. data,
  1888. filename: '医护排班'
  1889. })
  1890. this.downloadLoading = false
  1891. })
  1892. },
  1893. formatJson(filterVal, jsonData) {
  1894. return jsonData.map(v => filterVal.map(j => v[j]))
  1895. },
  1896. },
  1897. created(){
  1898. //获取医护人员
  1899. this.getDoctorList()
  1900. //获取班种班种
  1901. this.getScheduleList()
  1902. let year = new Date().getFullYear()
  1903. let month = new Date().getMonth() + 1
  1904. let date = new Date().getDate()
  1905. this.weekNum = this.getYearWeek(year,month,date)
  1906. this.todayDate=this.formatDate(new Date())
  1907. this.setDate(new Date())
  1908. for (var i = 0; i <= 9; i++) {
  1909. this.setDate1(this.addDate(this.currentDate, 7))
  1910. }
  1911. let newNum = 0
  1912. for(let i = 0; i < this.weekList.length; i++){
  1913. if(this.weekNum + i + 1 <= 53){
  1914. let num = this.weekNum + i + 1
  1915. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + num + ')'
  1916. this.typeOptions.push({value:i,label:str})
  1917. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1918. this.timeOptions.push({value:i,label:stt})
  1919. }else{
  1920. newNum++
  1921. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + newNum + ')'
  1922. this.typeOptions.push({value:i,label:str})
  1923. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1924. this.timeOptions.push({value:i,label:stt})
  1925. }
  1926. }
  1927. var now = moment().locale('zh-cn').format('YYYY-MM-DD 00:00:00')
  1928. this.timeNow = this.getTimestamp(now)
  1929. }
  1930. }
  1931. </script>
  1932. <style lang="scss" scoped>
  1933. .dateBox{
  1934. border: 1px solid #DCDFE6;
  1935. height: 36px;
  1936. line-height: 36px;
  1937. text-align: center;
  1938. padding: 0 10px;
  1939. border-radius: 4px;
  1940. }
  1941. .classBox{
  1942. width:28%;
  1943. height: 100%;
  1944. border: 1px solid #d0d3da;
  1945. .classTitle{
  1946. height: 42px;
  1947. text-align: center;
  1948. line-height: 42px;
  1949. background-color: rgb(245, 247, 250);
  1950. color: rgb(96, 98, 102);
  1951. font-weight:bold;
  1952. }
  1953. .classMain{
  1954. height: 400px;
  1955. padding: 0 0 0 20px;
  1956. display: flex;
  1957. justify-content: space-between;
  1958. flex-direction: column;
  1959. >div>p{
  1960. line-height: 30px;
  1961. color: rgb(48, 49, 51);
  1962. }
  1963. .classMainBox{
  1964. height: 350px;
  1965. overflow-y: auto;
  1966. }
  1967. }
  1968. }
  1969. </style>
  1970. <style lang="scss">
  1971. .schedulingTable{
  1972. .el-table .cell {
  1973. white-space: pre-line;/*保留换行符*/
  1974. }
  1975. }
  1976. .el-dropdown-menu{
  1977. max-height:96%;
  1978. overflow-y: auto;
  1979. }
  1980. </style>