index.vue 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
  4. <el-form-item label="公司名" prop="companyName">
  5. <el-input
  6. v-model="queryParams.companyName"
  7. placeholder="请输入公司名"
  8. clearable
  9. size="small"
  10. @keyup.enter.native="handleQuery"
  11. />
  12. </el-form-item>
  13. <el-form-item label="所属部门" prop="deptId">
  14. <el-select v-model="queryParams.deptId" placeholder="请选择所属部门" clearable size="small">
  15. <el-option
  16. v-for="item in deptOptions"
  17. :key="item.deptId"
  18. :label="item.deptName"
  19. :value="item.deptId"
  20. />
  21. </el-select>
  22. </el-form-item>
  23. <el-form-item label="联系电话" prop="companyMobile">
  24. <el-input
  25. v-model="queryParams.companyMobile"
  26. placeholder="请输入联系电话"
  27. clearable
  28. size="small"
  29. @keyup.enter.native="handleQuery"
  30. />
  31. </el-form-item>
  32. <el-form-item label="状态" prop="status">
  33. <el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
  34. <el-option
  35. v-for="dict in statusOptions"
  36. :key="dict.dictValue"
  37. :label="dict.dictLabel"
  38. :value="dict.dictValue"
  39. />
  40. </el-select>
  41. </el-form-item>
  42. <el-form-item>
  43. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  44. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  45. </el-form-item>
  46. </el-form>
  47. <el-row :gutter="10" class="mb8">
  48. <el-col :span="1.5">
  49. <el-button
  50. type="primary"
  51. plain
  52. icon="el-icon-plus"
  53. size="mini"
  54. @click="handleAdd"
  55. v-hasPermi="['his:company:add']"
  56. >新增
  57. </el-button>
  58. </el-col>
  59. <el-col :span="1.5">
  60. <el-button
  61. type="success"
  62. plain
  63. icon="el-icon-edit"
  64. size="mini"
  65. :disabled="single"
  66. @click="handleUpdate"
  67. v-hasPermi="['his:company:edit']"
  68. >修改
  69. </el-button>
  70. </el-col>
  71. <el-col :span="1.5">
  72. <el-button
  73. type="danger"
  74. plain
  75. icon="el-icon-delete"
  76. size="mini"
  77. :disabled="multiple"
  78. @click="handleDelete"
  79. v-hasPermi="['his:company:remove']"
  80. >删除
  81. </el-button>
  82. </el-col>
  83. <el-col :span="1.5">
  84. <el-button
  85. type="warning"
  86. plain
  87. icon="el-icon-download"
  88. size="mini"
  89. :loading="exportLoading"
  90. @click="handleExport"
  91. v-hasPermi="['his:company:export']"
  92. >导出
  93. </el-button>
  94. </el-col>
  95. <el-col :span="1.5">
  96. <el-button
  97. type="primary"
  98. plain
  99. icon="el-icon-edit"
  100. size="mini"
  101. :disabled="multiple"
  102. @click="handleMiniProgram"
  103. >批量修改小程序
  104. </el-button>
  105. </el-col>
  106. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  107. </el-row>
  108. <el-table height="660" v-loading="loading" border :data="companyList" @selection-change="handleSelectionChange">
  109. <el-table-column type="selection" width="55" align="center"/>
  110. <el-table-column label="ID" align="center" prop="companyId"/>
  111. <el-table-column label="企业名" align="center" prop="companyName"/>
  112. <el-table-column label="商务负责人" align="center" prop="manager"/>
  113. <el-table-column label="联系人" align="center" prop="linkName"/>
  114. <el-table-column label="状态" align="center" prop="status">
  115. <template slot-scope="scope">
  116. <dict-tag :options="statusOptions" :value="scope.row.status"/>
  117. </template>
  118. </el-table-column>
  119. <el-table-column label="余额" align="center" prop="money"/>
  120. <el-table-column label="红包余额" align="center" prop="redPackageMoney"/>
  121. <el-table-column label="企业类型" align="center" prop="companyType">
  122. <template slot-scope="scope">
  123. <dict-tag :options="companyTypeOptions" :value="scope.row.companyType"/>
  124. </template>
  125. </el-table-column>
  126. <el-table-column label="管理员账号" align="center" prop="userName"/>
  127. <el-table-column label="限制用户数量" align="center" prop="limitUserCount"/>
  128. <el-table-column label="限制pad数量" align="center" prop="maxPadNum" :formatter="padNumFormatter" v-if="this.$store.state.user.medicalMallConfig.resource"/>
  129. <el-table-column label="占用pad数量" align="center" prop="usedNum" v-if="this.$store.state.user.medicalMallConfig.resource"/>
  130. <el-table-column label="所属部门" align="center" prop="deptId" v-if="this.$store.state.user.medicalMallConfig.resource">
  131. <template slot-scope="scope">
  132. <el-tag prop="deptId" v-for="(item, index) in deptOptions" :key="'deptId'+index"
  133. v-if="scope.row.deptId===item.deptId"
  134. >{{ item.deptName }}
  135. </el-tag>
  136. </template>
  137. </el-table-column>
  138. <!-- 看课休息 -->
  139. <el-table-column label="看课休息开关" align="center" prop="isOpenRestReminder">
  140. <template slot-scope="scope">
  141. <el-tag v-if="scope.row.isOpenRestReminder==1" type="success">开启</el-tag>
  142. <el-tag v-if="scope.row.isOpenRestReminder==0" type="success">关闭</el-tag>
  143. </template>
  144. </el-table-column>
  145. <el-table-column label="备注" align="center" prop="remark"/>
  146. <el-table-column label="开始时间" align="center" prop="startTime" width="180"/>
  147. <el-table-column label="到期时间" align="center" prop="limitTime" width="180"/>
  148. <el-table-column label="创建时间" align="center" prop="createTime" width="180"/>
  149. <el-table-column label="更新时间" align="center" prop="updateTime" width="180"/>
  150. <el-table-column v-if="'济南联志健康'==signProjectName" align="center" width="180" label="分公司配置商户号" prop="mchId" />
  151. <!-- <el-table-column label="主机重启时间" align="center" prop="restartTime" width="180" />-->
  152. <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" width="220px">
  153. <template slot-scope="scope">
  154. <el-button
  155. size="mini"
  156. type="text"
  157. icon="el-icon-edit"
  158. @click="handleUpdate(scope.row)"
  159. v-hasPermi="['his:company:edit']"
  160. >修改
  161. </el-button>
  162. <el-button
  163. size="mini"
  164. type="text"
  165. icon="el-icon-edit"
  166. @click="handleResetPwd(scope.row)"
  167. v-hasPermi="['his:company:pass']"
  168. >重置密码
  169. </el-button>
  170. <el-button
  171. size="mini"
  172. type="text"
  173. icon="el-icon-delete"
  174. @click="handleDelete(scope.row)"
  175. v-hasPermi="['his:company:remove']"
  176. >删除
  177. </el-button>
  178. <el-button
  179. size="mini"
  180. type="text"
  181. icon="el-icon-edit"
  182. @click="handleRecharge(scope.row)"
  183. v-hasPermi="['his:company:recharge']"
  184. >充值
  185. </el-button>
  186. <el-button
  187. size="mini"
  188. type="text"
  189. icon="el-icon-edit"
  190. @click="handleDeduct(scope.row)"
  191. v-hasPermi="['his:company:deduct']"
  192. >扣款
  193. </el-button>
  194. <el-button
  195. v-if="showRedPacket"
  196. size="mini"
  197. type="text"
  198. icon="el-icon-edit"
  199. @click="handleRedRecharge(scope.row)"
  200. v-hasPermi="['his:company:redRecharge']"
  201. >红包充值
  202. </el-button>
  203. <el-button
  204. v-if="showRedPacket"
  205. size="mini"
  206. type="text"
  207. icon="el-icon-edit"
  208. @click="handleRedDeduct(scope.row)"
  209. v-hasPermi="['his:company:redDeduct']"
  210. >红包扣款
  211. </el-button>
  212. <el-button
  213. size="mini"
  214. type="text"
  215. icon="el-icon-edit"
  216. @click="handleRevenue(scope.row)"
  217. v-hasPermi="['company:company:revenue']"
  218. >分账配置</el-button>
  219. </template>
  220. </el-table-column>
  221. </el-table>
  222. <pagination
  223. v-show="total>0"
  224. :total="total"
  225. :page.sync="queryParams.pageNum"
  226. :limit.sync="queryParams.pageSize"
  227. @pagination="getList"
  228. />
  229. <!-- 添加或修改诊所管理对话框 -->
  230. <el-dialog :title="title" :visible.sync="open" width="700px" append-to-body>
  231. <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  232. <el-form-item label="公司名称" prop="companyName">
  233. <el-input v-model="form.companyName" placeholder="请输入公司名称"/>
  234. </el-form-item>
  235. <el-form-item label="公司类型" prop="companyType">
  236. <el-select
  237. v-model="form.companyType"
  238. placeholder="请选择"
  239. clearable
  240. size="small"
  241. >
  242. <el-option
  243. v-for="item in companyTypeOptions"
  244. :key="item.dictValue"
  245. :label="item.dictLabel"
  246. :value="item.dictValue"
  247. />
  248. </el-select>
  249. </el-form-item>
  250. <!-- 所属部门 -->
  251. <el-form-item label="所属部门" prop="deptId" v-if="this.$store.state.user.medicalMallConfig.resource">
  252. <el-select
  253. v-model="form.deptId"
  254. placeholder="请选择"
  255. clearable
  256. size="small"
  257. >
  258. <el-option
  259. v-for="item in deptOptions"
  260. :key="item.deptId"
  261. :label="item.deptName"
  262. :value="item.deptId"
  263. />
  264. </el-select>
  265. </el-form-item>
  266. <el-form-item label="商务负责人" prop="manager">
  267. <el-input v-model="form.manager" placeholder="请输入商务负责人"/>
  268. </el-form-item>
  269. <el-form-item label="联系人" prop="linkName">
  270. <el-input v-model="form.linkName" placeholder="请输入联系人"/>
  271. </el-form-item>
  272. <el-form-item label="联系电话" prop="companyMobile">
  273. <el-input v-model="form.companyMobile" placeholder="请输入联系电话"/>
  274. </el-form-item>
  275. <el-form-item label="员工数量" prop="limitUserCount">
  276. <el-input-number v-model="form.limitUserCount" :min="1" :max="10000"></el-input-number>
  277. </el-form-item>
  278. <el-form-item label="pad数量" prop="maxPadNum" v-if="this.$store.state.user.medicalMallConfig.resource">
  279. <el-input-number v-model="form.maxPadNum" :min="-1" :max="10000"></el-input-number>
  280. <span class="pad-tips">
  281. 注:-1表示不做限制
  282. </span>
  283. </el-form-item>
  284. <el-form-item label="坐席数量" prop="voiceCallerNumber">
  285. <el-input-number v-model="form.voiceCallerNumber" :min="0" :max="10000"></el-input-number>
  286. </el-form-item>
  287. <el-form-item label="管理员帐号" prop="userName" v-if="form.companyId==null">
  288. <el-input v-model="form.userName" placeholder="请输入管理员帐号"/>
  289. </el-form-item>
  290. <el-form-item label="管理员密码" prop="password" v-if="form.companyId==null">
  291. <el-input type="password" v-model="form.password" placeholder="请输入管理员密码"/>
  292. </el-form-item>
  293. <el-form-item label="掉线通知群名" prop="groupName">
  294. <el-input v-model="form.groupName" :maxlength="15" placeholder="请输入掉线通知群名"/>
  295. </el-form-item>
  296. <el-form-item label="地址" prop="companyAddress">
  297. <el-input v-model="form.companyAddress" placeholder="请输入地址"/>
  298. </el-form-item>
  299. <el-form-item label="套餐包分类" prop="packageCateIds">
  300. <el-select v-model="form.packageCateIds" multiple filterable placeholder="请选择套餐包分类"
  301. style="width: 300px;"
  302. >
  303. <el-option
  304. v-for="item in cateList"
  305. :key="item.dictValue"
  306. :label="item.dictLabel"
  307. :value="item.dictValue"
  308. ></el-option>
  309. </el-select>
  310. </el-form-item>
  311. <el-form-item label="随访医生" prop="followDoctorIds">
  312. <el-select v-model="form.followDoctorIds" multiple filterable placeholder="请选择随访医生"
  313. style="width: 300px;"
  314. >
  315. <el-option
  316. v-for="item in followDoctorList"
  317. :key="item.dictValue"
  318. :label="item.dictLabel"
  319. :value="item.dictValue"
  320. ></el-option>
  321. </el-select>
  322. </el-form-item>
  323. <el-form-item label="医生" prop="doctorIds">
  324. <el-select v-model="doctorIds" multiple filterable placeholder="请选择医生" style="width: 300px;">
  325. <el-option
  326. v-for="item in doctor"
  327. :key="item.id"
  328. :label="item.name"
  329. :value="item.id"
  330. ></el-option>
  331. </el-select>
  332. </el-form-item>
  333. <el-form-item label="状态" prop="status">
  334. <el-radio-group v-model="form.status">
  335. <el-radio v-for="dict in statusOptions" :key="dict.dictValue" :label="dict.dictValue">{{ dict.dictLabel }}
  336. </el-radio>
  337. </el-radio-group>
  338. </el-form-item>
  339. <el-form-item label="通话API接口" prop="voiceApiId">
  340. <el-select
  341. v-model="form.voiceApiId"
  342. placeholder="请选择"
  343. clearable
  344. size="small"
  345. >
  346. <el-option
  347. v-for="item in voiceApis"
  348. :key="item.apiId"
  349. :label="item.apiName"
  350. :value="item.apiId"
  351. />
  352. </el-select>
  353. </el-form-item>
  354. <el-form-item label="开始时间" prop="startTime">
  355. <el-date-picker clearable size="small"
  356. v-model="form.startTime"
  357. type="date"
  358. value-format="yyyy-MM-dd"
  359. placeholder="选择开始时间"
  360. >
  361. </el-date-picker>
  362. </el-form-item>
  363. <el-form-item label="到期时间" prop="limitTime">
  364. <el-date-picker clearable size="small"
  365. v-model="form.limitTime"
  366. type="date"
  367. value-format="yyyy-MM-dd"
  368. placeholder="选择到期时间"
  369. >
  370. </el-date-picker>
  371. </el-form-item>
  372. <!-- <el-form-item label="主机重启时间" prop="restartTime" >-->
  373. <!-- <el-time-select style="width: 150px;" placeholder="主机重启时间(不填默认1点10分)" v-model="form.restartTime" :picker-options="{-->
  374. <!-- start: '00:00',-->
  375. <!-- step: '00:05',-->
  376. <!-- end: '24:00'-->
  377. <!-- }"></el-time-select>-->
  378. <!-- </el-form-item>-->
  379. <el-form-item label="自定义小程序" prop="customMiniAppId">
  380. <el-select
  381. v-model="form.customMiniAppId"
  382. placeholder="请选择自定义小程序"
  383. clearable
  384. size="small"
  385. >
  386. <el-option
  387. v-for="item in customAppList"
  388. :key="item.appId"
  389. :label="item.appName"
  390. :value="item.appId"
  391. />
  392. </el-select>
  393. </el-form-item>
  394. <el-form-item label="服务号点播配置" prop="courseMaAppId">
  395. <el-select
  396. v-model="form.courseMaAppId"
  397. placeholder="请选择服务号"
  398. clearable
  399. size="small"
  400. >
  401. <el-option
  402. v-for="item in maAppList"
  403. :key="item.appId"
  404. :label="item.appName"
  405. :value="item.appId"
  406. />
  407. </el-select>
  408. </el-form-item>
  409. <el-form-item label="小程序点播配置" prop="courseMiniAppId">
  410. <el-select
  411. v-model="form.courseMiniAppId"
  412. placeholder="请选择小程序"
  413. clearable
  414. size="small"
  415. >
  416. <el-option
  417. v-for="item in miniAppList"
  418. :key="item.appId"
  419. :label="item.appName"
  420. :value="item.appId"
  421. />
  422. </el-select>
  423. </el-form-item>
  424. <el-form-item label="主要小程序" prop="miniAppMaster">
  425. <el-select
  426. v-model="form.miniAppMaster"
  427. multiple
  428. :multiple-limit="1"
  429. placeholder="请选择"
  430. clearable
  431. size="small"
  432. >
  433. <el-option
  434. v-for="item in miniAppList"
  435. :key="item.appId"
  436. :label="item.appName"
  437. :value="item.appId"
  438. />
  439. </el-select>
  440. </el-form-item>
  441. <el-form-item label="备用小程序" prop="miniAppServer">
  442. <el-select
  443. v-model="form.miniAppServer"
  444. multiple
  445. :multiple-limit="1"
  446. placeholder="请选择"
  447. clearable
  448. size="small"
  449. >
  450. <el-option
  451. v-for="item in miniAppList"
  452. :key="item.appId"
  453. :label="item.appName"
  454. :value="item.appId"
  455. />
  456. </el-select>
  457. </el-form-item>
  458. <el-form-item label="看课休息开关" >
  459. <el-radio-group v-model="form.isOpenRestReminder">
  460. <el-radio :label="1" >开</el-radio>
  461. <el-radio :label="0">关</el-radio>
  462. </el-radio-group>
  463. <span>(默认为空,走系统配置)</span>
  464. </el-form-item>
  465. <el-form-item label="备注" prop="remark">
  466. <el-input v-model="form.remark" type="textarea" :rows="2" placeholder="请输入备注"/>
  467. </el-form-item>
  468. </el-form>
  469. <div slot="footer" class="dialog-footer">
  470. <el-button type="primary" @click="submitForm">确 定</el-button>
  471. <el-button @click="cancel">取 消</el-button>
  472. </div>
  473. </el-dialog>
  474. <el-dialog :title="recharge.title" :visible.sync="recharge.open" width="500px" append-to-body>
  475. <el-form ref="rechargeForm" :rules="rechargeRules" :model="rechargeForm" label-width="80px">
  476. <el-form-item label="公司">
  477. <el-input v-model="rechargeForm.companyName" disabled/>
  478. </el-form-item>
  479. <el-form-item label="余额">
  480. <el-input v-model="rechargeForm.balance" disabled/>
  481. </el-form-item>
  482. <el-form-item label="充值金额" prop="money">
  483. <el-input-number v-model="rechargeForm.money" :min="0.01" placeholder="请输入充值金额"/>
  484. </el-form-item>
  485. <el-form-item label="备注" prop="remark">
  486. <el-input v-model="rechargeForm.remark" placeholder="请输入备注"/>
  487. </el-form-item>
  488. </el-form>
  489. <div slot="footer" class="dialog-footer">
  490. <el-button type="primary" @click="submitRechargeForm">确 定</el-button>
  491. <el-button @click="recharge.open=false">取 消</el-button>
  492. </div>
  493. </el-dialog>
  494. <el-dialog :title="redRecharge.title" :visible.sync="redRecharge.open" width="500px" append-to-body>
  495. <el-form ref="redRechargeForm" :rules="redRechargeRules" :model="redRechargeForm" label-width="80px">
  496. <el-form-item label="公司">
  497. <el-input v-model="redRechargeForm.companyName" disabled/>
  498. </el-form-item>
  499. <el-form-item label="余额">
  500. <el-input v-model="redRechargeForm.balance" disabled/>
  501. </el-form-item>
  502. <el-form-item label="充值金额" prop="money">
  503. <el-input-number v-model="redRechargeForm.money" :min="0.01" placeholder="请输入充值金额"/>
  504. </el-form-item>
  505. <el-form-item label="备注" prop="remark">
  506. <el-input v-model="redRechargeForm.remark" placeholder="请输入备注"/>
  507. </el-form-item>
  508. </el-form>
  509. <div slot="footer" class="dialog-footer">
  510. <el-button type="primary" @click="submitRedRechargeForm" :disabled="redSubmit">确 定</el-button>
  511. <el-button @click="redRecharge.open=false">取 消</el-button>
  512. </div>
  513. </el-dialog>
  514. <el-dialog :title="deduct.title" :visible.sync="deduct.open" width="500px" append-to-body>
  515. <el-form ref="deductForm" :rules="deductRules" :model="deductForm" label-width="80px">
  516. <el-form-item label="公司">
  517. <el-input v-model="deductForm.companyName" disabled/>
  518. </el-form-item>
  519. <el-form-item label="余额">
  520. <el-input v-model="deductForm.balance" disabled/>
  521. </el-form-item>
  522. <el-form-item label="扣款金额" prop="money">
  523. <el-input-number v-model="deductForm.money" :min="0.01" placeholder="请输入扣款金额"/>
  524. </el-form-item>
  525. <el-form-item label="备注" prop="remark">
  526. <el-input v-model="deductForm.remark" placeholder="请输入备注"/>
  527. </el-form-item>
  528. </el-form>
  529. <div slot="footer" class="dialog-footer">
  530. <el-button type="primary" @click="submitDeductForm">确 定</el-button>
  531. <el-button @click="deduct.open=false">取 消</el-button>
  532. </div>
  533. </el-dialog>
  534. <el-dialog :title="redDeduct.title" :visible.sync="redDeduct.open" width="500px" append-to-body>
  535. <el-form ref="redDeductForm" :rules="redDeductRules" :model="redDeductForm" label-width="80px">
  536. <el-form-item label="公司">
  537. <el-input v-model="redDeductForm.companyName" disabled/>
  538. </el-form-item>
  539. <el-form-item label="余额">
  540. <el-input v-model="redDeductForm.balance" disabled/>
  541. </el-form-item>
  542. <el-form-item label="扣款金额" prop="money">
  543. <el-input-number v-model="redDeductForm.money" :min="0.01" placeholder="请输入扣款金额"/>
  544. </el-form-item>
  545. <el-form-item label="备注" prop="remark">
  546. <el-input v-model="redDeductForm.remark" placeholder="请输入备注"/>
  547. </el-form-item>
  548. </el-form>
  549. <div slot="footer" class="dialog-footer">
  550. <el-button type="primary" @click="submitRedDeductForm">确 定</el-button>
  551. <el-button @click="redDeduct.open=false">取 消</el-button>
  552. </div>
  553. </el-dialog>
  554. <el-dialog :title="revenue.title" :visible.sync="revenue.open" width="800px" append-to-body>
  555. <el-form ref="revenueForm" :model="revenueForm" label-width="150px">
  556. <el-form-item label="公司">
  557. <el-input v-model="revenueForm.companyName" disabled/>
  558. </el-form-item>
  559. <el-form-item label="开启分账">
  560. <el-switch
  561. v-model="revenueForm.divFlag"
  562. active-color="#13ce66"
  563. inactive-color="#ff4949"
  564. active-value="1"
  565. inactive-value="0"
  566. >
  567. </el-switch>
  568. </el-form-item>
  569. <el-form-item label="分账模式" v-if="revenueForm.divFlag == 1">
  570. <el-radio v-model="revenueForm.delayAcctFlag" label="N">实时分账</el-radio>
  571. <el-radio v-model="revenueForm.delayAcctFlag" label="Y">延时分账</el-radio>
  572. </el-form-item>
  573. <el-form-item label="是否使用百分比分账" v-if="revenueForm.divFlag == 1">
  574. <el-switch
  575. v-model="revenueForm.percentageFlag"
  576. active-color="#13ce66"
  577. inactive-color="#ff4949"
  578. active-value="Y"
  579. inactive-value="N"
  580. >
  581. </el-switch>
  582. </el-form-item>
  583. <el-form-item label="是否净值分账" v-if="revenueForm.percentageFlag == 'Y'">
  584. <el-switch
  585. v-model="revenueForm.iscCleanSplit"
  586. active-color="#13ce66"
  587. inactive-color="#ff4949"
  588. active-value="Y"
  589. inactive-value="N"
  590. >
  591. </el-switch>
  592. </el-form-item>
  593. <div v-if="revenueForm.divFlag == 1">
  594. <el-form-item label="分账接收方配置">
  595. <el-tooltip content="批量设置分账接收账户" placement="top">
  596. <el-button type="primary" icon="el-icon-plus" @click="addAcctInfo" style="margin-bottom: 5px;">
  597. 添加新接收方
  598. </el-button>
  599. </el-tooltip>
  600. </el-form-item>
  601. <div v-for="(account, index) in revenueForm.acctInfos" :key="index"
  602. style="border: 1px solid #dcdfe6; padding: 20px; margin-bottom: 20px; border-radius: 4px;"
  603. >
  604. <div style="display: flex; justify-content: between; align-items: center; margin-bottom: 15px;">
  605. <div style="margin: 0; color: #409eff;">账户 {{ index + 1 }}</div>
  606. <el-button
  607. type="danger"
  608. icon="el-icon-delete"
  609. size="mini"
  610. @click="removeAcctInfo(index)"
  611. v-if="revenueForm.acctInfos.length > 0"
  612. >
  613. 删除账户
  614. </el-button>
  615. </div>
  616. <el-form-item label="分账接收方ID" :prop="`acctInfos.${index}.huifuId`">
  617. <el-input v-model="account.huifuId" placeholder="斗拱开户时生成;示例值:6666000123120001"></el-input>
  618. </el-form-item>
  619. <el-form-item label="账户号" :prop="`acctInfos.${index}.acctId`" >
  620. <el-input v-model="account.acctId" placeholder="可指定账户号,仅支持基本户、现金户,不填默认为基本户;示例值:F00598600"></el-input>
  621. </el-form-item>
  622. <el-form-item label="分账百分比%" v-if="revenueForm.percentageFlag == 'Y'" :prop="`acctInfos.${index}.percentageDiv`" >
  623. <el-input-number v-model="account.percentageDiv" :precision="2" :step="0.1" :min="0" :max="100" placeholder="示例值:23.50,表示23.50%。acct_infos中全部分账百分比之和必须为100.00%。"></el-input-number>
  624. </el-form-item>
  625. <el-form-item label="分账金额" v-if="revenueForm.percentageFlag == 'N'" :prop="`acctInfos.${index}.divAmt`" >
  626. <el-input-number v-model="account.divAmt" :precision="2" :step="1" :min="0.01" placeholder="单位元,需保留小数点后两位,示例值:1.00 ,最低传入0.01"></el-input-number>
  627. </el-form-item>
  628. </div>
  629. </div>
  630. </el-form>
  631. <div slot="footer" class="dialog-footer">
  632. <el-button type="primary" @click="submitRevenueForm">确 定</el-button>
  633. <el-button @click="revenue.open=false">取 消</el-button>
  634. </div>
  635. </el-dialog>
  636. <!-- 批量修改小程序 -->
  637. <el-dialog :title="miniProgram.title" :visible.sync="miniProgram.open" width="700px" append-to-body>
  638. <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  639. <el-form-item label="小程序点播配置" prop="courseMiniAppId">
  640. <el-select
  641. v-model="form.courseMiniAppId"
  642. placeholder="请选择小程序"
  643. clearable
  644. size="small"
  645. >
  646. <el-option
  647. v-for="item in miniAppList"
  648. :key="item.appId"
  649. :label="item.appName"
  650. :value="item.appId"
  651. />
  652. </el-select>
  653. </el-form-item>
  654. <el-form-item label="主要小程序" prop="miniAppMaster">
  655. <el-select
  656. v-model="form.miniAppMaster"
  657. multiple
  658. :multiple-limit="1"
  659. placeholder="请选择"
  660. clearable
  661. size="small"
  662. >
  663. <el-option
  664. v-for="item in miniAppList"
  665. :key="item.appId"
  666. :label="item.appName"
  667. :value="item.appId"
  668. />
  669. </el-select>
  670. </el-form-item>
  671. <el-form-item label="备用小程序" prop="miniAppServer">
  672. <el-select
  673. v-model="form.miniAppServer"
  674. multiple
  675. :multiple-limit="1"
  676. placeholder="请选择"
  677. clearable
  678. size="small"
  679. >
  680. <el-option
  681. v-for="item in miniAppList"
  682. :key="item.appId"
  683. :label="item.appName"
  684. :value="item.appId"
  685. />
  686. </el-select>
  687. </el-form-item>
  688. </el-form>
  689. <div slot="footer" class="dialog-footer">
  690. <el-button type="primary" @click="submitMiniProgramForm">确 定</el-button>
  691. <el-button @click="cancelMiniProgram">取 消</el-button>
  692. </div>
  693. </el-dialog>
  694. </div>
  695. </template>
  696. <script>
  697. import {
  698. listCompany,
  699. getCompany,
  700. delCompany,
  701. addCompany,
  702. updateCompany,
  703. recharge,
  704. redRecharge,
  705. deduct,
  706. redDeduct,
  707. exportCompany,
  708. resetPwd,
  709. getDivConfig,
  710. setDiv, exitMiniProgram
  711. } from '@/api/his/company'
  712. import { getFollowDoctorList } from '@/api/his/doctor'
  713. import { docList } from '@/api/his/doctor'
  714. import { getVoiceApiList } from '@/api/company/companyVoiceApi'
  715. import { getCitysArea } from '../../../api/company/company'
  716. import { cateList } from '@/api/his/packageCate'
  717. import { getConfigByKey } from '@/api/system/config'
  718. import { listDept } from '@/api/system/dept'
  719. import { listAll } from '@/api/course/coursePlaySourceConfig'
  720. import{ getSignProjectName } from '@/api/course/qw/courseWatchLog'
  721. export default {
  722. name: 'Company',
  723. data() {
  724. return {
  725. signProjectName:"",
  726. redSubmit: false,
  727. //分账参数
  728. revenue:{
  729. open: false,
  730. title: '分账配置'
  731. },
  732. revenueForm:{
  733. acctInfos: []
  734. },
  735. // 表单参数
  736. deductForm: {
  737. money: 0
  738. },
  739. // 表单参数
  740. redDeductForm: {
  741. money: 0
  742. },
  743. doctorIds: [],
  744. doctor: [],
  745. recharge: {
  746. open: false,
  747. title: '后台充值'
  748. },
  749. redRecharge: {
  750. open: false,
  751. title: '红包充值'
  752. },
  753. showRedPacket: false,
  754. // 遮罩层
  755. loading: true,
  756. // 导出遮罩层
  757. exportLoading: false,
  758. // 选中数组
  759. ids: [],
  760. // 非单个禁用
  761. single: true,
  762. // 非多个禁用
  763. multiple: true,
  764. // 显示搜索条件
  765. showSearch: true,
  766. // 总条数
  767. total: 0,
  768. // 诊所管理表格数据
  769. companyList: [],
  770. // 弹出层标题
  771. title: '',
  772. // 是否显示弹出层
  773. open: false,
  774. // 状态字典
  775. statusOptions: [],
  776. // 企业类型字典
  777. companyTypeOptions: [],
  778. //部门字典
  779. deptOptions: [],
  780. // 查询参数
  781. queryParams: {
  782. pageNum: 1,
  783. pageSize: 10,
  784. companyName: null,
  785. companyMobile: null,
  786. status: null,
  787. companyType: null,
  788. limitUserCount: null,
  789. maxPadNum: -1
  790. },
  791. voiceApis: [],
  792. // 表单参数
  793. rechargeForm: {
  794. money: 0
  795. },
  796. // 红包充值表单参数
  797. redRechargeForm: {
  798. money: 0
  799. },
  800. followDoctorList: [],
  801. cateList: [],
  802. // 表单参数
  803. form: {
  804. restartTime: '13:10',
  805. customMiniAppId: null,
  806. courseMaAppId: null,
  807. courseMiniAppId: null,
  808. miniAppMaster: [],
  809. miniAppServer: [],
  810. miniAppList: []
  811. },
  812. // 表单校验
  813. rules: {
  814. companyName: [
  815. { required: true, message: '公司名称不能为空', trigger: 'blur' }
  816. ],
  817. companyType: [
  818. { required: true, message: '公司类型不能为空', trigger: 'blur' }
  819. ],
  820. companyMobile: [
  821. { required: true, message: '公司电话不能为空', trigger: 'blur' }
  822. ],
  823. companyAddress: [
  824. { required: true, message: '公司地址不能为空', trigger: 'blur' }
  825. ],
  826. limitUserCount: [
  827. { required: true, message: '用户数量不能为空', trigger: 'blur' }
  828. ],
  829. maxPadNum: [
  830. { required: true, message: '最大Pad数量不能为空', trigger: 'blur' }
  831. ],
  832. status: [
  833. { required: true, message: '状态不能为空', trigger: 'blur' }
  834. ],
  835. startTime: [
  836. { required: true, message: '开始时间不能为空', trigger: 'blur' }
  837. ],
  838. limitTime: [
  839. { required: true, message: '到期时间不能为空', trigger: 'blur' }
  840. ],
  841. userName: [
  842. { required: true, message: '管理员账号不能为空', trigger: 'blur' }
  843. ],
  844. password: [
  845. { required: true, message: '管理员密码不能为空', trigger: 'blur' },
  846. {
  847. pattern: /^(?=.*[A-Za-z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,20}$/,
  848. message: '密码长度为8-20 位,必须包含字母、数字和特殊字符',
  849. trigger: ['blur', 'change']
  850. }
  851. ],
  852. manager: [
  853. { required: true, message: '商务负责人不能为空', trigger: 'blur' }
  854. ],
  855. linkName: [
  856. { required: true, message: '联系人不能为空', trigger: 'blur' }
  857. ]
  858. // followDoctorIds: [
  859. // { required: true, message: "不能为空", trigger: "blur" }
  860. // ],
  861. // packageCateIds: [
  862. // { required: true, message: "套餐包分类不能为空", trigger: "blur" }
  863. // ],
  864. },
  865. // 表单校验
  866. deductRules: {
  867. money: [
  868. { required: true, message: '扣款金额不能为空', trigger: 'blur' }
  869. ]
  870. },
  871. // 表单校验
  872. redDeductRules: {
  873. money: [
  874. { required: true, message: '扣款金额不能为空', trigger: 'blur' }
  875. ]
  876. },
  877. rechargeRules: {
  878. money: [
  879. { required: true, message: '扣款金额不能为空', trigger: 'blur' }
  880. ]
  881. },
  882. redRechargeRules: {
  883. money: [
  884. { required: true, message: '扣款金额不能为空', trigger: 'blur' }
  885. ]
  886. },
  887. deduct: {
  888. open: false,
  889. title: '后台扣款'
  890. },
  891. redDeduct: {
  892. open: false,
  893. title: '红包扣款'
  894. },
  895. maAppList: [],
  896. miniAppList: [],
  897. customAppList: [],
  898. //分账参数
  899. miniProgram:{
  900. open: false,
  901. title: '批量修改小程序'
  902. },
  903. }
  904. },
  905. created() {
  906. getSignProjectName()
  907. .then(res=>{
  908. this.signProjectName = res.signProjectName;
  909. })
  910. .catch(res=>{console.log("getSignProjectName Err")})
  911. this.getList()
  912. this.getDicts('sys_company_status').then(response => {
  913. this.statusOptions = response.data
  914. })
  915. this.getDicts('sys_company_type').then(response => {
  916. this.companyTypeOptions = response.data
  917. })
  918. getVoiceApiList().then((response) => {
  919. this.voiceApis = response.data
  920. })
  921. getFollowDoctorList().then((response) => {
  922. this.followDoctorList = response.rows
  923. })
  924. cateList().then((response) => {
  925. this.cateList = response.rows
  926. })
  927. listDept().then(response => {
  928. this.deptOptions = response.data
  929. })
  930. getConfigByKey("course.config").then(response => {
  931. if(response.data && response.data.configValue) {
  932. const config = JSON.parse(response.data.configValue);
  933. if( config.isRedPackageBalanceDeduction && config.isRedPackageBalanceDeduction==1){
  934. this.showRedPacket=true
  935. }
  936. } else {
  937. this.showRedPacket = false;
  938. }
  939. });
  940. docList().then(response => {
  941. this.doctor = response.rows
  942. })
  943. },
  944. methods: {
  945. // 添加分账账户
  946. addAcctInfo() {
  947. console.log("-----------------",this.revenueForm)
  948. this.revenueForm.acctInfos.push({
  949. huifuId: '',
  950. acctId: '',
  951. percentageDiv: null,
  952. divAmt: null
  953. })
  954. },
  955. // 删除接收方账户
  956. removeAcctInfo(index) {
  957. this.$confirm('确认删除该接收方账户?', '提示', {
  958. confirmButtonText: '确定',
  959. cancelButtonText: '取消',
  960. type: 'warning'
  961. }).then(() => {
  962. this.revenueForm.acctInfos.splice(index, 1)
  963. this.$message.success('删除成功')
  964. }).catch(() => {
  965. })
  966. },
  967. handleRevenue(row){
  968. const companyId = row.companyId
  969. //查询配置
  970. this.revenueForm.isAdd = 1
  971. getDivConfig(companyId).then(response => {
  972. if(response.data){
  973. this.revenueForm = response.data
  974. if(response.data.acctInfos == null){
  975. this.revenueForm.acctInfos = []
  976. }
  977. if(response.data.divFlag){
  978. this.revenueForm.divFlag = String(response.data.divFlag)
  979. }
  980. }
  981. })
  982. this.revenueForm.companyId = companyId
  983. this.revenueForm.companyName = row.companyName
  984. if(row.divFlag){
  985. this.revenueForm.divFlag == "0"
  986. }
  987. this.revenue.open = true
  988. },
  989. handleRecharge(row) {
  990. const companyId = row.companyId
  991. this.rechargeForm.companyId = row.companyId
  992. this.rechargeForm.companyName = row.companyName
  993. this.rechargeForm.balance = row.money
  994. this.rechargeForm.money = null
  995. this.recharge.open = true
  996. },
  997. // 红包充值
  998. handleRedRecharge(row) {
  999. this.redSubmit=false
  1000. this.redRechargeForm.companyId = row.companyId
  1001. this.redRechargeForm.companyName = row.companyName
  1002. this.redRechargeForm.balance = row.redPackageMoney
  1003. this.redRechargeForm.money = null
  1004. this.redRecharge.open = true
  1005. },
  1006. handleDeduct(row) {
  1007. const companyId = row.companyId
  1008. this.deductForm.companyId = row.companyId
  1009. this.deductForm.companyName = row.companyName
  1010. this.deductForm.balance = row.money
  1011. this.deductForm.money = null
  1012. this.deduct.open = true
  1013. },
  1014. handleRedDeduct(row) {
  1015. this.redDeductForm.companyId = row.companyId
  1016. this.redDeductForm.companyName = row.companyName
  1017. this.redDeductForm.balance = row.redPackageMoney
  1018. this.redDeductForm.money = null
  1019. this.redDeduct.open = true
  1020. },
  1021. /** 提交按钮 */
  1022. submitRechargeForm() {
  1023. this.$refs['rechargeForm'].validate(valid => {
  1024. if (valid) {
  1025. recharge(this.rechargeForm).then(response => {
  1026. if (response.code === 200) {
  1027. this.msgSuccess(response.msg)
  1028. this.recharge.open = false
  1029. this.getList()
  1030. }
  1031. })
  1032. }
  1033. })
  1034. },
  1035. /** 红包充值提交按钮 */
  1036. submitRedRechargeForm() {
  1037. this.$refs['redRechargeForm'].validate(valid => {
  1038. if (valid) {
  1039. this.redSubmit=true
  1040. redRecharge(this.redRechargeForm).then(response => {
  1041. if (response.code === 200) {
  1042. this.msgSuccess(response.msg)
  1043. this.redRecharge.open = false
  1044. this.getList()
  1045. }
  1046. })
  1047. }
  1048. })
  1049. },
  1050. submitRevenueForm(){
  1051. var param = this.revenueForm;
  1052. console.log("--------------",param)
  1053. if(param.companyId && param.divFlag){
  1054. setDiv(param).then(response => {
  1055. if (response.code === 200) {
  1056. this.msgSuccess(response.msg)
  1057. this.revenue.open = false
  1058. this.getList()
  1059. }
  1060. })
  1061. console.log("--------------",param)
  1062. }
  1063. },
  1064. /** 提交按钮 */
  1065. submitDeductForm() {
  1066. this.$refs['deductForm'].validate(valid => {
  1067. if (valid) {
  1068. deduct(this.deductForm).then(response => {
  1069. if (response.code === 200) {
  1070. this.msgSuccess(response.msg)
  1071. this.deduct.open = false
  1072. this.getList()
  1073. }
  1074. })
  1075. }
  1076. })
  1077. },
  1078. /** 提交按钮 */
  1079. submitRedDeductForm() {
  1080. this.$refs['redDeductForm'].validate(valid => {
  1081. if (valid) {
  1082. redDeduct(this.redDeductForm).then(response => {
  1083. if (response.code === 200) {
  1084. this.msgSuccess(response.msg)
  1085. this.redDeduct.open = false
  1086. this.getList()
  1087. }
  1088. })
  1089. }
  1090. })
  1091. },
  1092. getList() {
  1093. this.loading = true
  1094. listCompany(this.queryParams).then(response => {
  1095. this.companyList = response.rows
  1096. this.total = response.total
  1097. this.loading = false
  1098. })
  1099. },
  1100. // 取消按钮
  1101. cancel() {
  1102. this.open = false
  1103. this.reset()
  1104. },
  1105. // 表单重置
  1106. reset() {
  1107. this.form = {
  1108. companyId: null,
  1109. companyName: null,
  1110. companyMobile: null,
  1111. companyAddress: null,
  1112. addressId: null,
  1113. createTime: null,
  1114. updateTime: null,
  1115. status: 0,
  1116. startTime: null,
  1117. limitTime: null,
  1118. restartTime: '13:10',
  1119. balance: null,
  1120. companyType: null,
  1121. groupName: null,
  1122. userId: null,
  1123. remark: null,
  1124. isOpenRestReminder: null,
  1125. linkName: null,
  1126. limitUserCount: null,
  1127. maxPadNum: -1,
  1128. miniAppMaster: [],
  1129. miniAppList: [],
  1130. isDel: null,
  1131. courseMaAppId: null,
  1132. courseMiniAppId: null
  1133. }
  1134. this.resetForm('form')
  1135. },
  1136. /** 搜索按钮操作 */
  1137. handleQuery() {
  1138. this.queryParams.pageNum = 1
  1139. this.getList()
  1140. },
  1141. /** 重置按钮操作 */
  1142. resetQuery() {
  1143. this.resetForm('queryForm')
  1144. this.handleQuery()
  1145. },
  1146. handleResetPwd(row) {
  1147. const companyIds = row.companyId || this.ids
  1148. this.$confirm('是否确认重复密码为cq654321!!', '警告', {
  1149. confirmButtonText: '确定',
  1150. cancelButtonText: '取消',
  1151. type: 'warning'
  1152. }).then(function() {
  1153. return resetPwd(companyIds)
  1154. }).then(() => {
  1155. console.log('ok')
  1156. this.getList()
  1157. this.msgSuccess('修改成功')
  1158. }).catch(function() {
  1159. })
  1160. },
  1161. // 多选框选中数据
  1162. handleSelectionChange(selection) {
  1163. this.ids = selection.map(item => item.companyId)
  1164. this.single = selection.length !== 1
  1165. this.multiple = !selection.length
  1166. },
  1167. /** 新增按钮操作 */
  1168. handleAdd() {
  1169. this.reset()
  1170. this.getAppList(null)
  1171. this.open = true
  1172. this.doctorIds = []
  1173. this.title = '添加公司'
  1174. },
  1175. /** 修改按钮操作 */
  1176. handleUpdate(row) {
  1177. const companyId = row.companyId || this.ids
  1178. this.reset()
  1179. this.getAppList(companyId)
  1180. this.doctorIds = []
  1181. getCompany(companyId).then(response => {
  1182. this.form = response.data
  1183. this.form.usedNum = row.usedNum
  1184. this.open = true
  1185. this.title = '修改公司'
  1186. if (this.form.status != null) {
  1187. this.form.status = String(this.form.status)
  1188. }
  1189. if (this.form.doctorIds != null) {
  1190. this.doctorIds = ((this.form.doctorIds).split(',')).map(Number)
  1191. }
  1192. if (this.form.followDoctorIds != null) {
  1193. this.form.followDoctorIds = JSON.parse(this.form.followDoctorIds)
  1194. }
  1195. if (this.form.packageCateIds != null) {
  1196. this.form.packageCateIds = JSON.parse(this.form.packageCateIds)
  1197. }
  1198. if (this.form.companyType != null) {
  1199. this.form.companyType = String(this.form.companyType)
  1200. }
  1201. })
  1202. },
  1203. getAppList(companyId) {
  1204. this.maAppList = []
  1205. this.miniAppList = []
  1206. this.customAppList = []
  1207. listAll().then(response => {
  1208. const { code, data } = response
  1209. if (code === 200) {
  1210. if (data) {
  1211. this.maAppList = data.filter(v => v.type == 2).map(v => {
  1212. return { appId: v.appid, appName: v.name }
  1213. })
  1214. this.miniAppList = data.filter(v => v.type == 1).map(v => {
  1215. return { appId: v.appid, appName: v.name }
  1216. })
  1217. this.customAppList = data.filter(v => v.type == 3).map(v => {
  1218. return { appId: v.appid, appName: v.name }
  1219. })
  1220. }
  1221. }
  1222. })
  1223. },
  1224. /** 提交按钮 */
  1225. submitForm() {
  1226. this.$refs['form'].validate(valid => {
  1227. if (valid) {
  1228. if (this.form.followDoctorIds == null || this.form.followDoctorIds.length == 0) {
  1229. this.form.followDoctorIds = null
  1230. }
  1231. if (this.form.followDoctorIds != null && this.form.followDoctorIds.length > 0) {
  1232. this.form.followDoctorIds = JSON.stringify(this.form.followDoctorIds)
  1233. }
  1234. if (this.form.packageCateIds != null) {
  1235. this.form.packageCateIds = JSON.stringify(this.form.packageCateIds)
  1236. }
  1237. if (this.doctorIds != null) {
  1238. this.form.doctorIds = (this.doctorIds).toString()
  1239. }
  1240. if (this.doctorIds != null) {
  1241. this.form.doctorIds = (this.doctorIds).toString()
  1242. }
  1243. // if (this.form.miniAppMaster==null || this.form.miniAppMaster.length ===0 ){
  1244. // return this.$message.error("请选择主小程序")
  1245. // }
  1246. // if (this.form.miniAppServer==null || this.form.miniAppServer.length ===0 ){
  1247. // return this.$message.error("请选择备小程序")
  1248. // }
  1249. if (this.form.companyId != null) {
  1250. /* if(this.form.maxPadNum < this.form.usedNum && this.form.maxPadNum !== -1){
  1251. this.msgError("最大Pad数不能小于已使用Pad数,当前已使用"+this.form.usedNum)
  1252. return;
  1253. } */
  1254. updateCompany(this.form).then(response => {
  1255. this.msgSuccess('修改成功')
  1256. this.open = false
  1257. this.getList()
  1258. })
  1259. } else {
  1260. addCompany(this.form).then(response => {
  1261. this.msgSuccess('新增成功')
  1262. this.open = false
  1263. this.getList()
  1264. })
  1265. }
  1266. }
  1267. })
  1268. },
  1269. /** 删除按钮操作 */
  1270. handleDelete(row) {
  1271. const companyIds = row.companyId || this.ids
  1272. this.$confirm('是否确认删除公司管理编号为"' + companyIds + '"的数据项?', '警告', {
  1273. confirmButtonText: '确定',
  1274. cancelButtonText: '取消',
  1275. type: 'warning'
  1276. }).then(function() {
  1277. return delCompany(companyIds)
  1278. }).then(() => {
  1279. this.getList()
  1280. this.msgSuccess('删除成功')
  1281. }).catch(() => {
  1282. })
  1283. },
  1284. /** 导出按钮操作 */
  1285. handleExport() {
  1286. const queryParams = this.queryParams
  1287. this.$confirm('是否确认导出所有公司管理数据项?', '警告', {
  1288. confirmButtonText: '确定',
  1289. cancelButtonText: '取消',
  1290. type: 'warning'
  1291. }).then(() => {
  1292. this.exportLoading = true
  1293. return exportCompany(queryParams)
  1294. }).then(response => {
  1295. this.download(response.msg)
  1296. this.exportLoading = false
  1297. }).catch(() => {
  1298. })
  1299. },
  1300. padNumFormatter(row){
  1301. // console.log(row.maxPadNum.type)
  1302. return row.maxPadNum === -1 ? '不限' : row.maxPadNum
  1303. },
  1304. handleMiniProgram() {
  1305. this.getAppList(null);
  1306. this.miniProgram.open = true;
  1307. this.form = {
  1308. ...this.form,
  1309. courseMiniAppId:null,
  1310. miniAppMaster: null,
  1311. miniAppServer: null
  1312. };
  1313. },
  1314. // 取消按钮
  1315. cancelMiniProgram() {
  1316. this.miniProgram.open = false;
  1317. this.reset()
  1318. },
  1319. submitMiniProgramForm(){
  1320. this.form.ids = this.ids;
  1321. exitMiniProgram(this.form).then(response => {
  1322. if (response.code === 200) {
  1323. this.miniProgram.open = false;
  1324. this.msgSuccess('修改小程序成功')
  1325. this.getList()
  1326. }
  1327. });
  1328. },
  1329. }
  1330. }
  1331. </script>
  1332. <style scoped>
  1333. .pad-tips {
  1334. color: #999;
  1335. font-size: 12px;
  1336. height: 50px;
  1337. }
  1338. </style>