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

index.vue 97KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068
  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. }
  934. })
  935. },
  936. getClass(name,index){
  937. if(name != undefined){
  938. let newClass = '';
  939. this.tableData.map(item => {
  940. if(item.user_name == name){
  941. if(item.list){
  942. item.list.map(it => {
  943. if(it.schedule_week == index){
  944. newClass = it.class_name
  945. }
  946. })
  947. }
  948. }
  949. })
  950. return newClass
  951. }
  952. },
  953. getClassAttributes(name,index){
  954. if(name != undefined){
  955. let newClass = '';
  956. this.tableData.map(item => {
  957. if(item.user_name == name){
  958. if(item.list){
  959. item.list.map(it => {
  960. if(it.schedule_week == index){
  961. newClass = it.class_attributes
  962. }
  963. })
  964. }
  965. }
  966. })
  967. return newClass
  968. }
  969. },
  970. unique(arr) {
  971. const res = new Map();
  972. return arr.filter((arr) => !res.has(arr.admin_user_id) && res.set(arr.admin_user_id, 1))
  973. },
  974. //获取上一周下一周的排班数据
  975. getNextWeekList(){
  976. const params = {
  977. start_time:this.getTimestamp(this.weekDayArr[0]),
  978. end_time:this.getTimestamp(this.weekDayArr[6]),
  979. doctor_id:parseInt(this.typeValue),
  980. }
  981. console.log("params232323",params)
  982. getNextWeekList(params).then(response=>{
  983. if(response.data.state == 1){
  984. var staffList = response.data.data.staffList
  985. // console.log("上下周数据",staffList)
  986. var sevenStr = ""
  987. var oneStr = ""
  988. var twoStr = ""
  989. var threeStr = ""
  990. var fourStr = ""
  991. var fiveStr = ""
  992. var sixStr = ""
  993. this.arrZero = []
  994. this.arrOne = []
  995. this.arrTwo = []
  996. this.arrThree = []
  997. this.arrFour = []
  998. this.arrFive = []
  999. this.arrSix = []
  1000. for(let i=0;i<staffList.length;i++){
  1001. if(staffList[i].schedule_week == 0){
  1002. staffList[i].class_index = 0
  1003. var arr = []
  1004. this.arrZero.push(staffList[i].class_name)
  1005. for(let i=0;i<this.arrZero.length;i++){
  1006. if(this.arrZero[i]!=''){
  1007. arr.push(this.arrZero[i])
  1008. }
  1009. }
  1010. var countedNames = arr.reduce(function (allNames, name) {
  1011. if (name in allNames) {
  1012. allNames[name]++;
  1013. }
  1014. else {
  1015. allNames[name] = 1;
  1016. }
  1017. return allNames;
  1018. }, {});
  1019. let objKey = Object.keys(countedNames)
  1020. let objVal = Object.values(countedNames)
  1021. var zeroStr = ''
  1022. objKey.map((item,index) => {
  1023. let objVal = Object.values(countedNames)
  1024. zeroStr += item + objVal[index] + '\n'
  1025. })
  1026. sevenStr = zeroStr
  1027. }
  1028. if(staffList[i].schedule_week == 1){
  1029. staffList[i].class_index = 1
  1030. var arr = []
  1031. this.arrOne.push(staffList[i].class_name)
  1032. for(let i=0;i<this.arrOne.length;i++){
  1033. if(this.arrOne[i]!=''){
  1034. arr.push(this.arrOne[i])
  1035. }
  1036. }
  1037. var countedNames = arr.reduce(function (allNames, name) {
  1038. if (name in allNames) {
  1039. allNames[name]++;
  1040. }
  1041. else {
  1042. allNames[name] = 1;
  1043. }
  1044. return allNames;
  1045. }, {});
  1046. let objKey = Object.keys(countedNames)
  1047. let objVal = Object.values(countedNames)
  1048. let strOne = ''
  1049. objKey.map((item,index) => {
  1050. let objVal = Object.values(countedNames)
  1051. strOne += item + objVal[index] + '\n'
  1052. })
  1053. oneStr = strOne
  1054. }
  1055. if(staffList[i].schedule_week == 2){
  1056. staffList[i].class_index = 2
  1057. var arr = []
  1058. this.arrTwo.push(staffList[i].class_name)
  1059. for(let i=0;i<this.arrTwo.length;i++){
  1060. if(this.arrTwo[i]!=''){
  1061. arr.push(this.arrTwo[i])
  1062. }
  1063. }
  1064. var countedNames = arr.reduce(function (allNames, name) {
  1065. if (name in allNames) {
  1066. allNames[name]++;
  1067. }
  1068. else {
  1069. allNames[name] = 1;
  1070. }
  1071. return allNames;
  1072. }, {});
  1073. let objKey = Object.keys(countedNames)
  1074. let objVal = Object.values(countedNames)
  1075. let strTwo = ''
  1076. objKey.map((item,index) => {
  1077. let objVal = Object.values(countedNames)
  1078. strTwo += item + objVal[index] + '\n'
  1079. })
  1080. twoStr = strTwo
  1081. }
  1082. if(staffList[i].schedule_week == 3){
  1083. staffList[i].class_index = 3
  1084. var arr = []
  1085. this.arrThree.push(staffList[i].class_name)
  1086. for(let i=0;i<this.arrThree.length;i++){
  1087. if(this.arrThree[i]!=''){
  1088. arr.push(this.arrThree[i])
  1089. }
  1090. }
  1091. var countedNames = arr.reduce(function (allNames, name) {
  1092. if (name in allNames) {
  1093. allNames[name]++;
  1094. }
  1095. else {
  1096. allNames[name] = 1;
  1097. }
  1098. return allNames;
  1099. }, {});
  1100. let objKey = Object.keys(countedNames)
  1101. let objVal = Object.values(countedNames)
  1102. let strThree = ''
  1103. objKey.map((item,index) => {
  1104. let objVal = Object.values(countedNames)
  1105. strThree += item + objVal[index] + '\n'
  1106. })
  1107. threeStr = strThree
  1108. }
  1109. if(staffList[i].schedule_week == 4){
  1110. staffList[i].class_index = 4
  1111. var arr = []
  1112. this.arrFour.push(staffList[i].class_name)
  1113. for(let i=0;i<this.arrFour.length;i++){
  1114. if(this.arrFour[i]!=''){
  1115. arr.push(this.arrFour[i])
  1116. }
  1117. }
  1118. var countedNames = arr.reduce(function (allNames, name) {
  1119. if (name in allNames) {
  1120. allNames[name]++;
  1121. }
  1122. else {
  1123. allNames[name] = 1;
  1124. }
  1125. return allNames;
  1126. }, {});
  1127. let objKey = Object.keys(countedNames)
  1128. let objVal = Object.values(countedNames)
  1129. let strFour = ''
  1130. objKey.map((item,index) => {
  1131. let objVal = Object.values(countedNames)
  1132. strFour += item + objVal[index] + '\n'
  1133. })
  1134. fourStr = strFour
  1135. }
  1136. if(staffList[i].schedule_week == 5){
  1137. staffList[i].class_index = 5
  1138. var arr = []
  1139. this.arrFive.push(staffList[i].class_name)
  1140. for(let i=0;i<this.arrFive.length;i++){
  1141. if(this.arrFive[i]!=''){
  1142. arr.push(this.arrFive[i])
  1143. }
  1144. }
  1145. var countedNames = arr.reduce(function (allNames, name) {
  1146. if (name in allNames) {
  1147. allNames[name]++;
  1148. }
  1149. else {
  1150. allNames[name] = 1;
  1151. }
  1152. return allNames;
  1153. }, {});
  1154. let objKey = Object.keys(countedNames)
  1155. let objVal = Object.values(countedNames)
  1156. let strFive = ''
  1157. objKey.map((item,index) => {
  1158. let objVal = Object.values(countedNames)
  1159. strFive += item + objVal[index] + '\n'
  1160. })
  1161. fiveStr = strFive
  1162. }
  1163. if(staffList[i].schedule_week == 6){
  1164. staffList[i].class_index = 6
  1165. var arr = []
  1166. this.arrSix.push(staffList[i].class_name)
  1167. for(let i=0;i<this.arrSix.length;i++){
  1168. if(this.arrSix[i]!=''){
  1169. arr.push(this.arrSix[i])
  1170. }
  1171. }
  1172. var countedNames = arr.reduce(function (allNames, name) {
  1173. if (name in allNames) {
  1174. allNames[name]++;
  1175. }
  1176. else {
  1177. allNames[name] = 1;
  1178. }
  1179. return allNames;
  1180. }, {});
  1181. let objKey = Object.keys(countedNames)
  1182. let objVal = Object.values(countedNames)
  1183. let strSix = ''
  1184. objKey.map((item,index) => {
  1185. let objVal = Object.values(countedNames)
  1186. strSix += item + objVal[index] + '\n'
  1187. })
  1188. sixStr = strSix
  1189. }
  1190. }
  1191. let tempArr = [], newArr = []
  1192. for (let i = 0; i < staffList.length; i++) {
  1193. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1194. newArr.push({
  1195. user_name: staffList[i].user_name,
  1196. admin_user_id:staffList[i].admin_user_id,
  1197. user_type:staffList[i].doctor_type,
  1198. is_sort:staffList[i].is_sort,
  1199. sort:staffList[i].sort,
  1200. 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}]
  1201. })
  1202. tempArr.push(staffList[i].user_name);
  1203. } else {
  1204. for (let j = 0; j < newArr.length; j++) {
  1205. if (newArr[j].user_name == staffList[i].user_name) {
  1206. 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})
  1207. }
  1208. }
  1209. }
  1210. }
  1211. let arr = [...newArr]
  1212. let newNurse = []
  1213. let newDoctor = []
  1214. arr.map(item => {
  1215. if(item.user_type == 2){
  1216. newDoctor.push(item)
  1217. }
  1218. if(item.user_type == 3){
  1219. newNurse.push(item)
  1220. }
  1221. })
  1222. //护士
  1223. newNurse.sort(this.compare('admin_user_id'))
  1224. let newNurseTableData = []
  1225. this.nurseTableData.map(item => {
  1226. if(item.is_sort == 1){
  1227. newNurseTableData.push(item)
  1228. }
  1229. })
  1230. newNurseTableData.sort(this.compare('admin_user_id'))
  1231. newNurseTableData.map((item,index) => {
  1232. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1233. }else{
  1234. 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})
  1235. }
  1236. })
  1237. newNurse.sort(this.compare('sort'))
  1238. //医生
  1239. newDoctor.sort(this.compare('admin_user_id'))
  1240. let newDoctorTableData = []
  1241. this.doctorTableData.map(item => {
  1242. if(item.is_sort == 1){
  1243. newDoctorTableData.push(item)
  1244. }
  1245. })
  1246. newDoctorTableData.sort(this.compare('admin_user_id'))
  1247. newDoctorTableData.map((item,index) => {
  1248. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1249. }else{
  1250. 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})
  1251. }
  1252. })
  1253. newDoctor.sort(this.compare('sort'))
  1254. // arr.sort(this.compare('admin_user_id'))
  1255. // this.doctorlist.sort(this.compare('admin_user_id'))
  1256. // this.doctorlist.forEach((item, index) => {
  1257. //   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1258. //   }else{
  1259. //     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: [],user_type:item.user_type})
  1260. //   }
  1261. // })
  1262. // arr.sort(this.compare('user_type'))
  1263. let arr2 = []
  1264. arr2.push({class_name:oneStr,schedule_week:1})
  1265. arr2.push({class_name:twoStr,schedule_week:2})
  1266. arr2.push({class_name:threeStr,schedule_week:3})
  1267. arr2.push({class_name:fourStr,schedule_week:4})
  1268. arr2.push({class_name:fiveStr,schedule_week:5})
  1269. arr2.push({class_name:sixStr,schedule_week:6})
  1270. arr2.push({class_name:zeroStr,schedule_week:0})
  1271. var obj = {}
  1272. obj.admin_user_id = "1000000"
  1273. obj.user_name = "合计"
  1274. obj.user_type = 10
  1275. obj.list = arr2
  1276. arr.push(obj)
  1277. if(parseInt(this.typeValue) == 2){
  1278. newNurse = []
  1279. }
  1280. if(parseInt(this.typeValue) == 3){
  1281. newDoctor = []
  1282. }
  1283. let data = []
  1284. data.push(...newNurse)
  1285. data.push(...newDoctor)
  1286. data.push(obj)
  1287. this.tableData = data
  1288. }
  1289. })
  1290. },
  1291. changeOption(id){
  1292. const params = {
  1293. start_time:this.getTimestamp(this.weekDayArr[0]),
  1294. end_time:this.getTimestamp(this.weekDayArr[6]),
  1295. doctor_id:id
  1296. }
  1297. getScheduleByDoctorId(params).then(response=>{
  1298. if(response.data.state == 1){
  1299. var staffList = response.data.data.staffList
  1300. // console.log("staffList",staffList)
  1301. var sevenStr = ""
  1302. var oneStr = ""
  1303. var twoStr = ""
  1304. var threeStr = ""
  1305. var fourStr = ""
  1306. var fiveStr = ""
  1307. var sixStr = ""
  1308. this.arrZero = []
  1309. this.arrOne = []
  1310. this.arrTwo = []
  1311. this.arrThree = []
  1312. this.arrFour = []
  1313. this.arrFive = []
  1314. this.arrSix = []
  1315. for(let i=0;i<staffList.length;i++){
  1316. if(staffList[i].schedule_week == 0){
  1317. staffList[i].class_index = 0
  1318. var arr = []
  1319. this.arrZero.push(staffList[i].class_name)
  1320. for(let i=0;i<this.arrZero.length;i++){
  1321. if(this.arrZero[i]!=''){
  1322. arr.push(this.arrZero[i])
  1323. }
  1324. }
  1325. var countedNames = arr.reduce(function (allNames, name) {
  1326. if (name in allNames) {
  1327. allNames[name]++;
  1328. }
  1329. else {
  1330. allNames[name] = 1;
  1331. }
  1332. return allNames;
  1333. }, {});
  1334. let objKey = Object.keys(countedNames)
  1335. let objVal = Object.values(countedNames)
  1336. var zeroStr = ''
  1337. objKey.map((item,index) => {
  1338. let objVal = Object.values(countedNames)
  1339. zeroStr += item + objVal[index] + '\n'
  1340. })
  1341. sevenStr = zeroStr
  1342. }
  1343. if(staffList[i].schedule_week == 1){
  1344. staffList[i].class_index = 1
  1345. var arr = []
  1346. this.arrOne.push(staffList[i].class_name)
  1347. for(let i=0;i<this.arrOne.length;i++){
  1348. if(this.arrOne[i]!=''){
  1349. arr.push(this.arrOne[i])
  1350. }
  1351. }
  1352. var countedNames = arr.reduce(function (allNames, name) {
  1353. if (name in allNames) {
  1354. allNames[name]++;
  1355. }
  1356. else {
  1357. allNames[name] = 1;
  1358. }
  1359. return allNames;
  1360. }, {});
  1361. let objKey = Object.keys(countedNames)
  1362. let objVal = Object.values(countedNames)
  1363. let strOne = ''
  1364. objKey.map((item,index) => {
  1365. let objVal = Object.values(countedNames)
  1366. strOne += item + objVal[index] + '\n'
  1367. })
  1368. oneStr = strOne
  1369. }
  1370. if(staffList[i].schedule_week == 2){
  1371. staffList[i].class_index = 2
  1372. var arr = []
  1373. this.arrTwo.push(staffList[i].class_name)
  1374. for(let i=0;i<this.arrTwo.length;i++){
  1375. if(this.arrTwo[i]!=''){
  1376. arr.push(this.arrTwo[i])
  1377. }
  1378. }
  1379. var countedNames = arr.reduce(function (allNames, name) {
  1380. if (name in allNames) {
  1381. allNames[name]++;
  1382. }
  1383. else {
  1384. allNames[name] = 1;
  1385. }
  1386. return allNames;
  1387. }, {});
  1388. let objKey = Object.keys(countedNames)
  1389. let objVal = Object.values(countedNames)
  1390. let strTwo = ''
  1391. objKey.map((item,index) => {
  1392. let objVal = Object.values(countedNames)
  1393. strTwo += item + objVal[index] + '\n'
  1394. })
  1395. twoStr = strTwo
  1396. }
  1397. if(staffList[i].schedule_week == 3){
  1398. staffList[i].class_index = 3
  1399. var arr = []
  1400. this.arrThree.push(staffList[i].class_name)
  1401. for(let i=0;i<this.arrThree.length;i++){
  1402. if(this.arrThree[i]!=''){
  1403. arr.push(this.arrThree[i])
  1404. }
  1405. }
  1406. var countedNames = arr.reduce(function (allNames, name) {
  1407. if (name in allNames) {
  1408. allNames[name]++;
  1409. }
  1410. else {
  1411. allNames[name] = 1;
  1412. }
  1413. return allNames;
  1414. }, {});
  1415. let objKey = Object.keys(countedNames)
  1416. let objVal = Object.values(countedNames)
  1417. let strThree = ''
  1418. objKey.map((item,index) => {
  1419. let objVal = Object.values(countedNames)
  1420. strThree += item + objVal[index] + '\n'
  1421. })
  1422. threeStr = strThree
  1423. }
  1424. if(staffList[i].schedule_week == 4){
  1425. staffList[i].class_index = 4
  1426. var arr = []
  1427. this.arrFour.push(staffList[i].class_name)
  1428. for(let i=0;i<this.arrFour.length;i++){
  1429. if(this.arrFour[i]!=''){
  1430. arr.push(this.arrFour[i])
  1431. }
  1432. }
  1433. var countedNames = arr.reduce(function (allNames, name) {
  1434. if (name in allNames) {
  1435. allNames[name]++;
  1436. }
  1437. else {
  1438. allNames[name] = 1;
  1439. }
  1440. return allNames;
  1441. }, {});
  1442. let objKey = Object.keys(countedNames)
  1443. let objVal = Object.values(countedNames)
  1444. let strFour = ''
  1445. objKey.map((item,index) => {
  1446. let objVal = Object.values(countedNames)
  1447. strFour += item + objVal[index] + '\n'
  1448. })
  1449. fourStr = strFour
  1450. }
  1451. if(staffList[i].schedule_week == 5){
  1452. staffList[i].class_index = 5
  1453. var arr = []
  1454. this.arrFive.push(staffList[i].class_name)
  1455. for(let i=0;i<this.arrFive.length;i++){
  1456. if(this.arrFive[i]!=''){
  1457. arr.push(this.arrFive[i])
  1458. }
  1459. }
  1460. var countedNames = arr.reduce(function (allNames, name) {
  1461. if (name in allNames) {
  1462. allNames[name]++;
  1463. }
  1464. else {
  1465. allNames[name] = 1;
  1466. }
  1467. return allNames;
  1468. }, {});
  1469. let objKey = Object.keys(countedNames)
  1470. let objVal = Object.values(countedNames)
  1471. let strFive = ''
  1472. objKey.map((item,index) => {
  1473. let objVal = Object.values(countedNames)
  1474. strFive += item + objVal[index] + '\n'
  1475. })
  1476. fiveStr = strFive
  1477. }
  1478. if(staffList[i].schedule_week == 6){
  1479. staffList[i].class_index = 6
  1480. var arr = []
  1481. this.arrSix.push(staffList[i].class_name)
  1482. for(let i=0;i<this.arrSix.length;i++){
  1483. if(this.arrSix[i]!=''){
  1484. arr.push(this.arrSix[i])
  1485. }
  1486. }
  1487. var countedNames = arr.reduce(function (allNames, name) {
  1488. if (name in allNames) {
  1489. allNames[name]++;
  1490. }
  1491. else {
  1492. allNames[name] = 1;
  1493. }
  1494. return allNames;
  1495. }, {});
  1496. let objKey = Object.keys(countedNames)
  1497. let objVal = Object.values(countedNames)
  1498. let strSix = ''
  1499. objKey.map((item,index) => {
  1500. let objVal = Object.values(countedNames)
  1501. strSix += item + objVal[index] + '\n'
  1502. })
  1503. sixStr = strSix
  1504. }
  1505. }
  1506. let tempArr = [], newArr = []
  1507. for (let i = 0; i < staffList.length; i++) {
  1508. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1509. newArr.push({
  1510. user_name: staffList[i].user_name,
  1511. admin_user_id:staffList[i].admin_user_id,
  1512. user_type:staffList[i].doctor_type,
  1513. is_sort:staffList[i].is_sort,
  1514. sort:staffList[i].sort,
  1515. 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}]
  1516. })
  1517. tempArr.push(staffList[i].user_name);
  1518. } else {
  1519. for (let j = 0; j < newArr.length; j++) {
  1520. if (newArr[j].user_name == staffList[i].user_name) {
  1521. 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})
  1522. }
  1523. }
  1524. }
  1525. }
  1526. let arr = [...newArr]
  1527. let newNurse = []
  1528. let newDoctor = []
  1529. arr.map(item => {
  1530. if(item.user_type == 2){
  1531. newDoctor.push(item)
  1532. }
  1533. if(item.user_type == 3){
  1534. newNurse.push(item)
  1535. }
  1536. })
  1537. if(id == 0){
  1538. //护士
  1539. newNurse.sort(this.compare('admin_user_id'))
  1540. let newNurseTableData = []
  1541. this.nurseTableData.map(item => {
  1542. if(item.is_sort == 1){
  1543. newNurseTableData.push(item)
  1544. }
  1545. })
  1546. newNurseTableData.sort(this.compare('admin_user_id'))
  1547. newNurseTableData.map((item,index) => {
  1548. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1549. }else{
  1550. 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})
  1551. }
  1552. })
  1553. newNurse.sort(this.compare('sort'))
  1554. //医生
  1555. newDoctor.sort(this.compare('admin_user_id'))
  1556. let newDoctorTableData = []
  1557. this.doctorTableData.map(item => {
  1558. if(item.is_sort == 1){
  1559. newDoctorTableData.push(item)
  1560. }
  1561. })
  1562. newDoctorTableData.sort(this.compare('admin_user_id'))
  1563. newDoctorTableData.map((item,index) => {
  1564. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1565. }else{
  1566. 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})
  1567. }
  1568. })
  1569. newDoctor.sort(this.compare('sort'))
  1570. // let data = []
  1571. // data.push(...newNurse)
  1572. // data.push(...newDoctor)
  1573. // this.tableData = data
  1574. let arr2 = []
  1575. arr2.push({class_name:oneStr,schedule_week:1})
  1576. arr2.push({class_name:twoStr,schedule_week:2})
  1577. arr2.push({class_name:threeStr,schedule_week:3})
  1578. arr2.push({class_name:fourStr,schedule_week:4})
  1579. arr2.push({class_name:fiveStr,schedule_week:5})
  1580. arr2.push({class_name:sixStr,schedule_week:6})
  1581. arr2.push({class_name:zeroStr,schedule_week:0})
  1582. var obj = {}
  1583. obj.admin_user_id = "1000000"
  1584. obj.user_name = "合计"
  1585. obj.user_type = 10
  1586. obj.list = arr2
  1587. arr.push(obj)
  1588. let data = []
  1589. data.push(...newNurse)
  1590. data.push(...newDoctor)
  1591. data.push(obj)
  1592. this.tableData = data
  1593. }
  1594. if(id == 2){
  1595. newDoctor.sort(this.compare('admin_user_id'))
  1596. let newDoctorTableData = []
  1597. this.doctorTableData.map(item => {
  1598. if(item.is_sort == 1){
  1599. newDoctorTableData.push(item)
  1600. }
  1601. })
  1602. newDoctorTableData.sort(this.compare('admin_user_id'))
  1603. newDoctorTableData.map((item,index) => {
  1604. if (newDoctor[index] && item.admin_user_id == newDoctor[index].admin_user_id) {
  1605. }else{
  1606. 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})
  1607. }
  1608. })
  1609. newDoctor.sort(this.compare('sort'))
  1610. // this.tableData = newDoctor
  1611. let arr2 = []
  1612. arr2.push({class_name:oneStr,schedule_week:1})
  1613. arr2.push({class_name:twoStr,schedule_week:2})
  1614. arr2.push({class_name:threeStr,schedule_week:3})
  1615. arr2.push({class_name:fourStr,schedule_week:4})
  1616. arr2.push({class_name:fiveStr,schedule_week:5})
  1617. arr2.push({class_name:sixStr,schedule_week:6})
  1618. arr2.push({class_name:zeroStr,schedule_week:0})
  1619. var obj = {}
  1620. obj.admin_user_id = "1000000"
  1621. obj.user_name = "合计"
  1622. obj.user_type = 10
  1623. obj.list = arr2
  1624. arr.push(obj)
  1625. let data = []
  1626. data.push(...newDoctor)
  1627. data.push(obj)
  1628. this.tableData = data
  1629. }
  1630. if(id == 3){
  1631. newNurse.sort(this.compare('admin_user_id'))
  1632. let newNurseTableData = []
  1633. this.nurseTableData.map(item => {
  1634. if(item.is_sort == 1){
  1635. newNurseTableData.push(item)
  1636. }
  1637. })
  1638. newNurseTableData.sort(this.compare('admin_user_id'))
  1639. newNurseTableData.map((item,index) => {
  1640. if (newNurse[index] && item.admin_user_id == newNurse[index].admin_user_id) {
  1641. }else{
  1642. 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})
  1643. }
  1644. })
  1645. newNurse.sort(this.compare('sort'))
  1646. // this.tableData = newNurse
  1647. let arr2 = []
  1648. arr2.push({class_name:oneStr,schedule_week:1})
  1649. arr2.push({class_name:twoStr,schedule_week:2})
  1650. arr2.push({class_name:threeStr,schedule_week:3})
  1651. arr2.push({class_name:fourStr,schedule_week:4})
  1652. arr2.push({class_name:fiveStr,schedule_week:5})
  1653. arr2.push({class_name:sixStr,schedule_week:6})
  1654. arr2.push({class_name:zeroStr,schedule_week:0})
  1655. var obj = {}
  1656. obj.admin_user_id = "1000000"
  1657. obj.user_name = "合计"
  1658. obj.user_type = 10
  1659. obj.list = arr2
  1660. arr.push(obj)
  1661. let data = []
  1662. data.push(...newNurse)
  1663. data.push(obj)
  1664. this.tableData = data
  1665. }
  1666. }
  1667. })
  1668. },
  1669. toSearch(){
  1670. const params = {
  1671. user_name: this.keywords,
  1672. start_time:this.getTimestamp(this.weekDayArr[0]),
  1673. end_time:this.getTimestamp(this.weekDayArr[6])
  1674. }
  1675. toSearchScheduleList(params).then(response=>{
  1676. if(response.data.state == 1){
  1677. var staffList = response.data.data.staffList
  1678. // console.log("搜索",staffList)
  1679. let tempArr = [], newArr = []
  1680. for (let i = 0; i < staffList.length; i++) {
  1681. if (tempArr.indexOf(staffList[i].user_name) === -1) {
  1682. newArr.push({
  1683. user_name: staffList[i].user_name,
  1684. admin_user_id:staffList[i].admin_user_id,
  1685. 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}]
  1686. })
  1687. tempArr.push(staffList[i].user_name);
  1688. } else {
  1689. for (let j = 0; j < newArr.length; j++) {
  1690. if (newArr[j].user_name == staffList[i].user_name) {
  1691. 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})
  1692. }
  1693. }
  1694. }
  1695. }
  1696. if(this.keywords != ''){
  1697. this.tableData = newArr
  1698. }else{
  1699. let arr = [...newArr]
  1700. arr.sort(this.compare('admin_user_id'))
  1701. this.doctorlist.sort(this.compare('admin_user_id'))
  1702. this.doctorlist.forEach((item, index) => {
  1703.   if (arr[index] && item.admin_user_id == arr[index].admin_user_id) {
  1704.   }else{
  1705.     arr.splice(index, 0, {user_name: item.user_name, admin_user_id: item.admin_user_id, list: []})
  1706.     // console.log("arr",arr)
  1707.   }
  1708. })
  1709. this.tableData = arr
  1710. }
  1711. }
  1712. })
  1713. },
  1714. DeleteStaffSchedule(){
  1715. const params = {
  1716. start_time:this.getTimestamp(this.weekDayArr[0]),
  1717. end_time:this.getTimestamp(this.weekDayArr[6])
  1718. }
  1719. this.$confirm(
  1720. '是否要清除当周排班? <br>清除后,信息将无法恢复',
  1721. '删除提示',
  1722. {
  1723. dangerouslyUseHTMLString: true,
  1724. confirmButtonText: '确定',
  1725. cancelButtonText: '取消',
  1726. type: 'warning'
  1727. }
  1728. ).then(()=>{
  1729. DeleteStaffSchedule(params).then(response=>{
  1730. if(response.data.state == 1){
  1731. var msg = response.data.data.msg
  1732. this.$message.success("清除成功")
  1733. this.getStaffScheduleList()
  1734. }
  1735. })
  1736. })
  1737. },
  1738. copyStaffSchedule(){
  1739. this.newVisible = true
  1740. const params = {
  1741. start_time:this.getTimestamp(this.weekDayArr[0]),
  1742. end_time:this.getTimestamp(this.weekDayArr[6])
  1743. }
  1744. copyStaffSchedule(params).then(response=>{
  1745. if(response.data.state == 1){
  1746. var msg = response.data.data.msg
  1747. console.log("msg",msg)
  1748. this.$message.success("复制成功")
  1749. }else{
  1750. this.$message.error("排班已存在")
  1751. }
  1752. })
  1753. },
  1754. toContinuous(){
  1755. var is_status = 0
  1756. if(this.isChecked == false){
  1757. is_status = 0
  1758. }
  1759. if(this.isChecked == true){
  1760. is_status = 1
  1761. }
  1762. const params = {
  1763. is_status:is_status
  1764. }
  1765. UpdateContinusSchedule(params).then(response=>{
  1766. if(response.data.state == 1){
  1767. var schedule = response.data.data.schedule
  1768. this.$message.success("保存成功")
  1769. }
  1770. })
  1771. },
  1772. setDate1 (date) {
  1773. var week = date.getDay() - 1
  1774. date = this.addDate(date, week * -1)
  1775. this.currentDate = new Date(date)
  1776. let arr1 = []
  1777. for (var i = 0; i < this.clen; i++) {
  1778. arr1.push(this.formatDate(i == 0 ? date : this.addDate(date, 1)))
  1779. }
  1780. this.weekList.push(arr1)
  1781. let num = this.weekNum
  1782. this.currentFirstDate1 = num + 1
  1783. },
  1784. submitAction(formName){
  1785. var label = ""
  1786. for(let i=0;i<this.timeOptions.length;i++){
  1787. if(this.form.copyWeek == this.timeOptions[i].value){
  1788. label = this.timeOptions[i].label
  1789. }
  1790. }
  1791. var start = label.split('~')
  1792. var copy_startime = this.getTimestamp(start[0])
  1793. var copy_endtime = this.getTimestamp(start[1])
  1794. const params = {
  1795. start_time:this.getTimestamp(this.weekDayArr[0]),
  1796. end_time:this.getTimestamp(this.weekDayArr[6]),
  1797. copy_startime:copy_startime,
  1798. copy_endtime:copy_endtime,
  1799. }
  1800. this.$refs[formName].validate(valid=>{
  1801. if(valid){
  1802. copyStaffSchedule(params).then(response=>{
  1803. if(response.data.state == 1){
  1804. var msg = response.data.data.msg
  1805. this.$message.success("复制成功")
  1806. this.newVisible = false
  1807. }else{
  1808. this.$message.error("排班已存在")
  1809. }
  1810. })
  1811. }
  1812. })
  1813. },
  1814. compare(property){
  1815. return function(a,b){
  1816. var value1 = a[property];
  1817. var value2 = b[property];
  1818. return value2 - value1;
  1819. }
  1820. },
  1821. tableCellStyle (row, rowIndex, column) {
  1822. var week = (row.column.label).split('');
  1823. var weeks = 0
  1824. if (week.length == 13) {
  1825. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]
  1826. }
  1827. if (week.length == 14) {
  1828. weeks = week[4]+week[5]+week[6]+week[7]+week[8]+week[9]+week[10]+week[11]+week[12]
  1829. }
  1830. var weekdate = this.getTimestamp(weeks)
  1831. if(weekdate < this.timeNow){
  1832. return 'background-color:#e5e5e5;'
  1833. }
  1834. },
  1835. setting(){
  1836. this.nurseVisible = true
  1837. },
  1838. _close: function(done) {
  1839. done();
  1840. },
  1841. changeSort(val){
  1842. console.log('val',val)
  1843. const params = {
  1844. sort:parseInt(val.sort),
  1845. id:val.id,
  1846. }
  1847. console.log("params",params)
  1848. SaveNurseSort(params).then(response=>{
  1849. if(response.data.state == 1){
  1850. var role = response.data.data.role
  1851. this.$message.success("保存成功")
  1852. this.getDoctorList()
  1853. }
  1854. })
  1855. },
  1856. changeRadio(val){
  1857. console.log("val",val)
  1858. const params = {
  1859. id:val.id,
  1860. is_sort:val.is_sort,
  1861. }
  1862. SaveIsSchedule(params).then(response=>{
  1863. if(response.data.state == 1){
  1864. var role = response.data.data.role
  1865. this.$message.success("保存成功")
  1866. this.getDoctorList()
  1867. }
  1868. })
  1869. },
  1870. toExport(){
  1871. this.exportDialogVisible = true
  1872. },
  1873. getTimestamp(time) { //把时间日期转成时间戳
  1874. return (new Date(time)).getTime() / 1000
  1875. },
  1876. exportList(){
  1877. import('@/vendor/Export2Excel').then(excel => {
  1878. for(let i=0;i<this.tableData.length;i++){
  1879. this.tableData[i].monday = this.getClass(this.tableData[i].user_name,1)
  1880. this.tableData[i].tuesday = this.getClass(this.tableData[i].user_name,2)
  1881. this.tableData[i].wednesday = this.getClass(this.tableData[i].user_name,3)
  1882. this.tableData[i].thursday = this.getClass(this.tableData[i].user_name,4)
  1883. this.tableData[i].friday = this.getClass(this.tableData[i].user_name,5)
  1884. this.tableData[i].saturday = this.getClass(this.tableData[i].user_name,6)
  1885. this.tableData[i].weekday = this.getClass(this.tableData[i].user_name,0)
  1886. }
  1887. console.log("this.table",this.tableData)
  1888. const tHeader = ['医护姓名', '周一'+"("+this.weekDayArr[0]+")" , '周二'+"("+this.weekDayArr[1]+")", '周三'+"("+this.weekDayArr[2]+")" , '周四'+"("+this.weekDayArr[3]+")" , '周五'+"("+this.weekDayArr[4]+")" , '周六'+"("+this.weekDayArr[5]+")",'周日'+"("+this.weekDayArr[6]+")"]
  1889. const filterVal = ['user_name', 'monday', 'tuesday','wednesday','thursday','friday','saturday','weekday']
  1890. const data = this.formatJson(filterVal,this.tableData)
  1891. console.log("data",data)
  1892. excel.export_json_to_excel({
  1893. header: tHeader,
  1894. data,
  1895. filename: '医护排班'
  1896. })
  1897. this.downloadLoading = false
  1898. })
  1899. },
  1900. formatJson(filterVal, jsonData) {
  1901. return jsonData.map(v => filterVal.map(j => v[j]))
  1902. },
  1903. },
  1904. created(){
  1905. //获取医护人员
  1906. this.getDoctorList()
  1907. //获取班种班种
  1908. this.getScheduleList()
  1909. let year = new Date().getFullYear()
  1910. let month = new Date().getMonth() + 1
  1911. let date = new Date().getDate()
  1912. this.weekNum = this.getYearWeek(year,month,date)
  1913. this.todayDate=this.formatDate(new Date())
  1914. this.setDate(new Date())
  1915. for (var i = 0; i <= 9; i++) {
  1916. this.setDate1(this.addDate(this.currentDate, 7))
  1917. }
  1918. let newNum = 0
  1919. for(let i = 0; i < this.weekList.length; i++){
  1920. if(this.weekNum + i + 1 <= 53){
  1921. let num = this.weekNum + i + 1
  1922. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + num + ')'
  1923. this.typeOptions.push({value:i,label:str})
  1924. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1925. this.timeOptions.push({value:i,label:stt})
  1926. }else{
  1927. newNum++
  1928. let str = this.weekList[i][0] + '~' + this.weekList[i][6] + '(' + newNum + ')'
  1929. this.typeOptions.push({value:i,label:str})
  1930. let stt = this.weekList[i][0] +"~"+this.weekList[i][6]
  1931. this.timeOptions.push({value:i,label:stt})
  1932. }
  1933. }
  1934. var now = moment().locale('zh-cn').format('YYYY-MM-DD 00:00:00')
  1935. this.timeNow = this.getTimestamp(now)
  1936. }
  1937. }
  1938. </script>
  1939. <style lang="scss" scoped>
  1940. .dateBox{
  1941. border: 1px solid #DCDFE6;
  1942. height: 36px;
  1943. line-height: 36px;
  1944. text-align: center;
  1945. padding: 0 10px;
  1946. border-radius: 4px;
  1947. }
  1948. .classBox{
  1949. width:28%;
  1950. height: 100%;
  1951. border: 1px solid #d0d3da;
  1952. .classTitle{
  1953. height: 42px;
  1954. text-align: center;
  1955. line-height: 42px;
  1956. background-color: rgb(245, 247, 250);
  1957. color: rgb(96, 98, 102);
  1958. font-weight:bold;
  1959. }
  1960. .classMain{
  1961. height: 400px;
  1962. padding: 0 0 0 20px;
  1963. display: flex;
  1964. justify-content: space-between;
  1965. flex-direction: column;
  1966. >div>p{
  1967. line-height: 30px;
  1968. color: rgb(48, 49, 51);
  1969. }
  1970. .classMainBox{
  1971. height: 350px;
  1972. overflow-y: auto;
  1973. }
  1974. }
  1975. }
  1976. </style>
  1977. <style lang="scss">
  1978. .schedulingTable{
  1979. .el-table .cell {
  1980. white-space: pre-line;/*保留换行符*/
  1981. }
  1982. }
  1983. .el-dropdown-menu{
  1984. max-height:96%;
  1985. overflow-y: auto;
  1986. }
  1987. </style>