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

index.vue 97KB

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