Flow - 副本.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709
  1. <template>
  2. <div class="all">
  3. <div class="main">
  4. <div class="main-top flex-box">
  5. <div class="flex-box-v flex-d-wrap">
  6. <div
  7. @click="activeFlow(item.index)"
  8. class="flex-box-v flex-center-center flow-item flex-d-wrap"
  9. :class="[isActive == item.index ? 'isActive' : '']"
  10. v-for="(item, index) in flowList"
  11. :key="index"
  12. v-show="item.isShow"
  13. >
  14. <div class="fontColorZ">{{ item.name }}</div>
  15. <div class="fontColorF" style="font-size: 13px;" v-if="item.stateText">{{ item.stateText }}</div>
  16. <!-- <i class="el-icon-right fontColorT" v-if="flowList.length != index + 1" style="font-size: 26px;margin: 0 20px;"></i> -->
  17. </div>
  18. </div>
  19. <div>
  20. <!-- 目标制定 -->
  21. <div v-show="isActive == 1">
  22. <div class="nweTitle">目标制定</div>
  23. <el-form label-width="120px">
  24. <el-form-item label="制定人:">
  25. <el-radio-group v-model="target.type">
  26. <el-radio :label="1">系统(使用考核模板)</el-radio>
  27. <el-radio :label="2">被考核人</el-radio>
  28. <el-radio :label="3">指定成员</el-radio>
  29. <el-radio :label="4">管理员(指定一级)</el-radio>
  30. </el-radio-group>
  31. <div class="flex-box-ce" style="margin-top: 10px;" v-show="target.type == 4">
  32. <span>被考评人的</span>
  33. <el-select v-model="target.manager_level" placeholder="请选择级别" style="margin: 0 10px;">
  34. <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
  35. </el-select>
  36. <el-tooltip class="item" effect="dark" content="找不到确认人时,由上级管理员替代" placement="top-start">
  37. <i class="fontColorF el-icon-warning"></i>
  38. </el-tooltip>
  39. </div>
  40. <div class="border flex-box-ce" style="position: relative;" v-show="target.type == 3">
  41. <div class="fontColorF flex-1" v-if="target.employeeList.length == 0">请选择指定人员</div>
  42. <div v-else style="width: 180px;" class="font-flex-word">
  43. <span v-for="(j, index2) in target.employeeList" :key="index2">
  44. <i v-if="index2 != 0">,</i>
  45. {{ j.name }}
  46. </span>
  47. </div>
  48. <span v-if="target.employeeList.length > 0" class="blue">{{ target.employeeList.length }}人</span>
  49. <i class="el-icon-arrow-down icon-right" v-else></i>
  50. <div @click="setEmployeeList(target.employeeList)" class="inputDc"></div>
  51. </div>
  52. </el-form-item>
  53. <el-form-item label="制定人多人时:" v-if="target.type == 3 || target.type == 4">
  54. <el-radio-group v-model="target.multi_executor">
  55. <el-radio :label="1">依次制定</el-radio>
  56. <el-radio :label="2">任一人制定即可</el-radio>
  57. </el-radio-group>
  58. </el-form-item>
  59. </el-form>
  60. </div>
  61. <!-- 执行中 -->
  62. <div v-show="isActive == 2">
  63. <div class="flex-box-v flex-center-center" style="margin-top: 10%;">
  64. <img src="@/assets/image/invite_new_company.png" style="width: 200px;height: 200px;margin-bottom: 10px;" />
  65. <div class="fontColorF" style="line-height: 30px;">
  66. 1、目标制定并确认后,将自动进入此节点;
  67. <br />
  68. 2、执行节点中,执行人可以制定执行计划,管理者可以添加管理跟踪记录;
  69. <br />
  70. 3、管理员设置【开始评分】后,自动进入评分节点
  71. </div>
  72. </div>
  73. </div>
  74. <!-- 评分:上级评分 -->
  75. <SuperiorFlow v-show="isActive == 3" ref="SuperiorFlow" @setInput="setInput" :data="superiorFlow"></SuperiorFlow>
  76. <!-- 评分:指定评分人 -->
  77. <div v-show="isActive == 4">
  78. <div class="nweTitle">
  79. 指定评分人
  80. <el-tooltip effect="dark" content="当指标有指定评分人时,应用以下配置" placement="top"><i class="el-icon-warning blue"></i></el-tooltip>
  81. </div>
  82. <div class="flex-box-ce" style="margin-left: 13px;margin-bottom: 20px;">
  83. <span class="label">评分人:</span>
  84. <div style="color: #606266;">指定评分人</div>
  85. </div>
  86. <div class="flex-box-ce" style="margin-left: 13px;">
  87. <span class="label">必填项:</span>
  88. <el-checkbox v-model="special_scorer.comment">指标评分说明</el-checkbox>
  89. <!-- <el-checkbox v-model="special_scorer.summar">评分总结</el-checkbox> -->
  90. </div>
  91. </div>
  92. <!-- 审批节点 -->
  93. <Examine v-show="isActive == 5" ref="Examine" @setIs="setIs" :data="examine"></Examine>
  94. <!-- 抄送 -->
  95. <div v-show="isActive == 6">
  96. <div class="nweTitle">
  97. 抄送
  98. <el-switch v-model="cc.enable" style="margin-left: 10px;" :active-value="1" :inactive-value="0"></el-switch>
  99. </div>
  100. <el-form :model="cc" label-width="120px" v-show="cc.enable == 1">
  101. <el-form-item label="抄送人:">
  102. <el-radio-group v-model="cc.type">
  103. <el-radio :label="1">管理员</el-radio>
  104. <el-radio :label="2">指定成员</el-radio>
  105. </el-radio-group>
  106. <div class="flex-box-ce" style="margin-top: 10px;" v-show="cc.type == 1">
  107. <span>被考评人的</span>
  108. <el-select v-model="cc.manager_level" placeholder="请选择级别" style="margin: 0 10px;">
  109. <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
  110. </el-select>
  111. </div>
  112. <div class="border flex-box-ce" style="position: relative;" v-show="cc.type == 2">
  113. <div class="fontColorF flex-1" v-if="cc.employeeList.length == 0">请选择指定人员</div>
  114. <div style="width: 180px;" class="font-flex-word" v-if="cc.employeeList[0]">
  115. <span v-for="(j, index2) in cc.employeeList" :key="index2">
  116. <i v-if="index2 != 0">,</i>
  117. <span v-if="j.name">{{ j.name }}</span>
  118. </span>
  119. </div>
  120. <span v-if="cc.employeeList.length > 0" class="blue">{{ cc.employeeList.length }}人</span>
  121. <i class="el-icon-arrow-down icon-right" v-else></i>
  122. <div @click="setEmployeeList(cc.employeeList)" class="inputDc"></div>
  123. </div>
  124. </el-form-item>
  125. <el-form-item label="抄送条件:">
  126. <el-radio-group v-model="cc.condition">
  127. <el-radio :label="1">得出结果后抄送</el-radio>
  128. <!-- <el-radio :label="2">公布结果后抄送</el-radio> -->
  129. </el-radio-group>
  130. </el-form-item>
  131. </el-form>
  132. </div>
  133. <!-- 目标确认 -->
  134. <Affirm v-show="isActive == 7" ref="Affirm" @setIs="setIs" :data="confirm"></Affirm>
  135. </div>
  136. </div>
  137. </div>
  138. <!-- 同步规则 -->
  139. <el-dialog title="同步规则" :visible.sync="isRule" width="700px" :close-on-click-modal="false">
  140. <div>
  141. <div class="dialog-title">将考核表规则同步到已发起的考核:</div>
  142. <div class="flex-box-ce dialog-item">
  143. <span>1</span>
  144. <div class="label">选择同步的考核</div>
  145. <div style="position: relative;">
  146. <el-input v-model="isRule" placeholder="请选择考核" style="width:250px"></el-input>
  147. <div @click="isChecks = true" class="inputDc"></div>
  148. </div>
  149. </div>
  150. <div class="flex-box-ce dialog-item">
  151. <span>2</span>
  152. <div class="label">选择同步的被考核人</div>
  153. <div style="position: relative;">
  154. <el-input v-model="isRule" placeholder="请选择考核人" style="width:250px"></el-input>
  155. <div @click="isRule2 = true" class="inputDc"></div>
  156. </div>
  157. </div>
  158. <div class="flex-box-ce dialog-item">
  159. <span>3</span>
  160. <div class="label">评分节点同步</div>
  161. <div>
  162. 评分节点同步
  163. <el-tooltip effect="dark" placement="top">
  164. <div slot="content">
  165. <i class="el-icon-caret-right" style="color: #fff;"></i>
  166. 已经进入评分的流程会重置到第一个评分环节继续评分
  167. <br />
  168. <i class="el-icon-caret-right" style="color: #fff;"></i>
  169. 未开始评分的评分流程直接更新
  170. </div>
  171. <i class="el-icon-warning blue"></i>
  172. </el-tooltip>
  173. </div>
  174. </div>
  175. </div>
  176. <span slot="footer" class="dialog-footer">
  177. <div class="flex-box-ce">
  178. <div class="flex-1 yellow" style="text-align: left;">注意:24h内仅允许对该考核表相同人员同步一次</div>
  179. <div>
  180. <el-button @click="isRule = false">取 消</el-button>
  181. <el-button type="primary" @click="isRule = false">保存考核表并同步</el-button>
  182. </div>
  183. </div>
  184. </span>
  185. </el-dialog>
  186. <!-- 选择考核 -->
  187. <BrawerBox drawerTitle="选择考核" :showDrawer.sync="isChecks">
  188. <template slot="main">
  189. <el-input placeholder="搜索考核" v-model="radio"></el-input>
  190. <ul class="ul">
  191. <li v-for="(item, index) in gzList" :key="index" class="flex-box-ce li">
  192. <el-checkbox class="flex-1" v-model="item.check" :label="item.label" @change="actionCheck($event, item)"></el-checkbox>
  193. <div class="blue" v-if="item.num > 0">{{ item.num }} 人</div>
  194. </li>
  195. </ul>
  196. </template>
  197. <template slot="footer">
  198. <el-button plain @click="isChecks = false">取消</el-button>
  199. <el-button type="primary" :loading="loading" @click="submitForm('detailForm')">确定</el-button>
  200. </template>
  201. </BrawerBox>
  202. <!-- 选择同步人员 -->
  203. <EmployeeSelector :selected="selected" :is_filtration_creator="false" :visible.sync="setAdministrator" @confirm="confirmAdministrator" />
  204. </div>
  205. </template>
  206. <script>
  207. import EmployeeSelector from '@/components/public/EmployeeSelector';
  208. import BrawerBox from '@/components/public/BrawerBox';
  209. import SuperiorFlow from '@/components/flow/SuperiorFlow';
  210. import Examine from '@/components/flow/Examine';
  211. import Affirm from '@/components/flow/Affirm';
  212. export default {
  213. components: { EmployeeSelector, BrawerBox, SuperiorFlow, Examine, Affirm },
  214. name: 'Flow',
  215. props: {
  216. isShowScore: {
  217. type: Boolean,
  218. default: false
  219. },
  220. data: {
  221. type: Object,
  222. default: {}
  223. }
  224. },
  225. watch: {
  226. data(val) {
  227. if (val.process) {
  228. this.recoverData();
  229. }
  230. },
  231. 'target.type'(val) {
  232. this.flowList.forEach((item, index) => {
  233. if (item.index == 1) {
  234. let str = '系统';
  235. if (val == 1) {
  236. str = '系统';
  237. } else if (val == 2) {
  238. str = '被考核人';
  239. } else if (val == 3) {
  240. str = '指定成员';
  241. } else {
  242. str = '管理员';
  243. }
  244. this.$set(this.flowList[index], 'stateText', str);
  245. }
  246. });
  247. },
  248. isShowScore(val) {
  249. //根据是否有指定评分人,来是否显示指定评分人模块
  250. if (!val) {
  251. if (this.isActive == 4) {
  252. this.isActive = 1;
  253. }
  254. }
  255. this.setExamineShow(val);
  256. },
  257. 'cc.enable'(val) {
  258. this.flowList.forEach((item, index) => {
  259. if (item.index == 6) {
  260. this.$set(this.flowList[index], 'stateText', val == 1 ? '' : '已禁用');
  261. }
  262. });
  263. }
  264. },
  265. data() {
  266. return {
  267. radio: 1,
  268. isActive: 1,
  269. checkbox: true,
  270. gzList: [1],
  271. loading: false,
  272. isChecks: false,
  273. isRule: false, //同步规则
  274. isRule2: false, //同步规则
  275. superiorFlow: {}, //上级评分(编辑)
  276. examine: {}, //审批节点(编辑)
  277. confirm: {}, //目标确认(编辑)
  278. selected: { employee: [], dept: [] }, //执行者列表
  279. setAdministrator: false,
  280. type: 1, //流程方式 1-按评分人设置流程(默认) 2-按指标设置流程
  281. // 下面是流程的数据
  282. target: {
  283. //目标制定
  284. enable: 1, //是否启用 1-启用 0-禁用
  285. type: 1, //制定者类型 1-系统(默认模板,不可制定目标直接进入下一步) 2-被考核人 3-制定成员 4-主管
  286. action: {
  287. //可执行动作(允许编辑内容)
  288. score_type: 1, //评分方式是否可编辑 1-可以 0-不可以
  289. result_source: 1, //结果值数据来源 1-可以 0-不可以
  290. reviewer: 1 //制定评分人 1-可以 0-不可以
  291. },
  292. multi_executor: 1, //执行人多人时处理方式 1-依次制定 2-任一人制定即可
  293. manager_level: 1, //上级等级
  294. supervisor_confirm: 1, //是否有上级主管代替 1-是 0-否
  295. employee_ids: [], //制定成员id列表
  296. employeeList: []
  297. },
  298. special_scorer: {
  299. //指定评分人(只有维度数据中有指定评分人的指标才会有)
  300. enable: 1, //是否启用 1-启用 0-禁用
  301. action: ['comment', 'summar'], //必填项 'comment', //指标评分说明'summar
  302. comment: false, //必填项 'comment',
  303. summar: false //指标评分说明'summar'
  304. },
  305. cc: {
  306. //抄送配置
  307. enable: 0, //是否启用 1-启用 0-禁用
  308. type: 1, //抄送人类型 1-主管 2-指定成员 3-角色
  309. manager_level: 1, //主管等级(只有抄送人类型为主管时有效)
  310. employee_ids: [], //指定成员id列表(只有抄送人类型为指定成员时有效)
  311. employeeList: [],
  312. // role_name: "creator", //角色名称(只有抄送人类型为角色时有效)
  313. condition: 1 //抄送结果 1-得出总分 2-公示结果
  314. },
  315. ruleForm: {
  316. type: 1, //流程方式 1-按评分人设置流程(默认) 2-按指标设置流程
  317. target: {
  318. //目标制定配置结果
  319. enable: 1, //是否启用 1-启用 0-禁用
  320. type: 1, //制定者类型 1-系统(默认模板,不可制定目标直接进入下一步) 2-被考核人 3-制定成员 4-主管
  321. action: {
  322. //可执行动作(允许编辑内容)
  323. score_type: 1, //评分方式是否可编辑 1-可以 0-不可以
  324. result_source: 1, //结果值数据来源 1-可以 0-不可以
  325. reviewer: 1 //制定评分人 1-可以 0-不可以
  326. },
  327. multi_executor: 1, //执行人多人时处理方式 1-依次制定 2-任一人制定即可
  328. manager_level: 1, //上级等级
  329. supervisor_confirm: 1, //是否有上级主管代替 1-是 0-否
  330. employee_ids: [] //制定成员id列表
  331. },
  332. confirm: {
  333. //目标确认配置结果
  334. enable: 0, //是否启用 1-启用 0-禁用
  335. confirmor: [
  336. //确认人员列表
  337. {
  338. type: 1, //确认人类型 1-主管 2-指定成员 3-被考核人 4-角色
  339. manager_level: 1, //主管级别
  340. supervisor_confirm: 1, //找不到确认人,有上级主管代替 1-是 0-否
  341. multi_executor: 1, //确认人多人时处理方式 1-依次确认 2-任一人确认 3-均需确认
  342. action: [
  343. //允许确认人动作
  344. 'index', //修改指标
  345. 'transfer' //转交
  346. ],
  347. employee_ids: [], //指定成员用户id列表(类型为指定成员时)
  348. role_name: 'creator' //角色名称(类型为指定角色时)
  349. }
  350. ],
  351. unique: 1 //重复去重
  352. },
  353. execution: {
  354. //执行中制定配置结果
  355. enable: 1 //是否启用 1-启用 0-禁用
  356. },
  357. score_self: {
  358. //自评指定配置结果
  359. enable: 0, //是否启用 1-启用 0-禁用
  360. weight: 0, //权重
  361. action: [
  362. //必填项动作
  363. 'comment', //指标评分说明
  364. 'summary' //评分总结
  365. ],
  366. rating: 0, //是否手动评级
  367. unique: 1 //评分人去重
  368. },
  369. score_mutual: {
  370. //互评配置结果
  371. enable: 0 //是否启用 1-启用 0-禁用
  372. },
  373. score_supervisor: {
  374. //上级评分
  375. enable: 1, //是否启用 1-启用 0-禁用
  376. unique: 1, //评分人去重 1-是 0-否
  377. supervisor: [
  378. //上级配置列表
  379. {
  380. type: 1, //评分人类型 1-主管 2-指定成员 3-角色
  381. manager_level: 1, //主管等级(只有评分人类型为主管时有效)
  382. supervisor_confirm: 1, //找不到确认人时是否由上级主管代替(只有评分人类型为主管时有效) 1-是 0-否
  383. role_name: 'creator', //角色名(只有评分人类型为角色时有效)
  384. employee_ids: [], //用户id列表(只有评分人类型为指定人员时有效)
  385. weight: 10, //权重
  386. multi_executor: 1, //评分人多人时 1-各自评分 2-任一人评分
  387. rule: 1, //评分规则 1-指标均要评分 2-评分总结
  388. action: [
  389. //必填项
  390. 'comment', //指标评分说明
  391. 'summary' //评分总结
  392. ],
  393. rating: 0, //是否手动评分 1-是 0-否
  394. transfer: 1 //是否允许转交 1-是 0-否
  395. }
  396. ]
  397. },
  398. special_scorer: {
  399. //指定评分人(只有维度数据中有指定评分人的指标才会有)
  400. enable: 1, //是否启用 1-启用 0-禁用
  401. action: ['comment', 'summar'] //必填项 'comment', //指标评分说明'summar ' //评分总
  402. },
  403. review: {
  404. //审批节点
  405. enable: 1, //是否启用 1-启用 0-禁用
  406. unique: 1, //评分人去重 1-是 0-否
  407. reviewer: [
  408. //审批人配置列表
  409. {
  410. type: 1, //用户种类 1-主管 2-指定成员 3-被考核人 4-角色
  411. action: ['transfer', 'refuse'], //转交//驳回 //允许审批人动作
  412. manager_level: 1, //主管级别(只有用户种类为主管有效)
  413. supervisor_confirm: 1, //找不到审批人时,是否由上级主管代替(只有用户种类为主管有效)
  414. multi_executor: 1, //审批人多人时选项 1-依次确认 2-任一人审批 3-均需审批(只有用户种类为主管、指定成员、角色时有效)
  415. employee_ids: [], //用户id列表(只有用户种类为指定成员时有效)
  416. role_name: 'creator' //角色名(只有用户种类为角色时有效)
  417. }
  418. ]
  419. },
  420. cc: {
  421. //抄送配置
  422. enable: 1, //是否启用 1-启用 0-禁用
  423. employee: {
  424. //抄送人员配置
  425. type: 1, //抄送人类型 1-主管 2-指定成员 3-角色
  426. manager_level: 1, //主管等级(只有抄送人类型为主管时有效)
  427. employee_ids: [1, 2], //指定成员id列表(只有抄送人类型为指定成员时有效)
  428. role_name: 'creator', //角色名称(只有抄送人类型为角色时有效)
  429. condition: 1 //抄送结果 1-得出总分 2-公示结果
  430. }
  431. }
  432. },
  433. flowList: [
  434. { name: '目标制定', stateText: '系统', index: 1, isShow: true },
  435. { name: '目标确认', stateText: '已禁用', index: 7, isShow: true },
  436. { name: '执行中', stateText: '', index: 2, isShow: true },
  437. { name: '评分:上级评分', stateText: '已禁用', index: 3, isShow: true },
  438. { name: '评分:指定评分人', stateText: '', index: 4, isShow: false },
  439. { name: '审批', stateText: '已禁用', index: 5, isShow: true },
  440. { name: '抄送', stateText: '已禁用', index: 6, isShow: true }
  441. ],
  442. options: [
  443. {
  444. value: 1,
  445. label: '直接管理员'
  446. },
  447. {
  448. value: 2,
  449. label: '二级管理员'
  450. },
  451. {
  452. value: 3,
  453. label: '三级管理员'
  454. },
  455. {
  456. value: 4,
  457. label: '四级管理员'
  458. },
  459. {
  460. value: 5,
  461. label: '五级管理员'
  462. },
  463. {
  464. value: 6,
  465. label: '六级管理员'
  466. }
  467. ]
  468. };
  469. },
  470. created() {},
  471. mounted() {},
  472. methods: {
  473. recoverData() {
  474. let data = this.data.process;
  475. let employeeMap = this.$getEmployeeList();
  476. this.type = data.type; //流程方式 1-按评分人设置流程(默认) 2-按指标设置流程
  477. let target = data.target;
  478. // 目标制定
  479. this.target = {
  480. //目标制定
  481. enable: 1, //是否启用 1-启用 0-禁用
  482. type: target.type, //制定者类型 1-系统(默认模板,不可制定目标直接进入下一步) 2-被考核人 3-制定成员 4-主管
  483. action: {
  484. //可执行动作(允许编辑内容)
  485. score_type: 1, //评分方式是否可编辑 1-可以 0-不可以
  486. result_source: 1, //结果值数据来源 1-可以 0-不可以
  487. reviewer: 1 //制定评分人 1-可以 0-不可以
  488. },
  489. multi_executor: target.multi_executor, //执行人多人时处理方式 1-依次制定 2-任一人制定即可
  490. manager_level: target.manager_level, //上级等级
  491. supervisor_confirm: 1, //是否有上级主管代替 1-是 0-否
  492. employee_ids: target.employee_ids, //制定成员id列表
  493. employeeList: target.employee_ids.map(item => {
  494. return employeeMap[item];
  495. })
  496. };
  497. // 目标确认
  498. this.confirm = data.confirm;
  499. // 上级评分
  500. this.superiorFlow = data.score_supervisor;
  501. // 审批节点
  502. this.examine = data.review;
  503. //指定评分人(只有维度数据中有指定评分人的指标才会有)
  504. this.special_scorer = {
  505. enable: data.special_scorer.enable, //是否启用 1-启用 0-禁用
  506. action: data.special_scorer.action, //必填项 'comment', //指标评分说明'summar
  507. comment: data.special_scorer.action.indexOf('comment') >= 0 ? true : false, //必填项 'comment',
  508. summar: data.special_scorer.action.indexOf('summar') >= 0 ? true : false //指标评分说明'summar'
  509. };
  510. //抄送配置
  511. let employee = data.cc.employee;
  512. this.cc.enable = data.cc.enable;
  513. this.cc.type = employee.type;
  514. this.cc.manager_level = employee.manager_level;
  515. this.cc.condition = employee.condition;
  516. this.cc.employee_ids = employee.employee_ids;
  517. this.cc.employeeList = employee.employee_ids.map(item => {
  518. return employeeMap[item];
  519. });
  520. },
  521. setEmployeeList(item) {
  522. this.selected.employee = item[0] ? item : [];
  523. this.setAdministrator = true;
  524. },
  525. confirmAdministrator(e) {
  526. if (this.isActive == 1) {
  527. this.target.employeeList = e.employee.length > 0 ? e.employee : [];
  528. } else {
  529. this.cc.employeeList = e.employee.length > 0 ? e.employee : [];
  530. }
  531. },
  532. setExamineShow(is) {
  533. this.flowList.forEach((item, index) => {
  534. if (item.index == 4) {
  535. this.$set(this.flowList[index], 'isShow', is);
  536. }
  537. });
  538. },
  539. //设置审批节点的状态
  540. setIs(str, itemIndex) {
  541. this.flowList.forEach((item, index) => {
  542. if (item.index == itemIndex) {
  543. this.$set(this.flowList[index], 'stateText', str);
  544. }
  545. });
  546. },
  547. // 设置上级评分人的权重
  548. setInput(num, is) {
  549. this.flowList.forEach((item, index) => {
  550. if (item.index == 3) {
  551. if (is) {
  552. this.$set(this.flowList[index], 'stateText', '评分权重:' + num + '%');
  553. } else {
  554. this.$set(this.flowList[index], 'stateText', '已禁用');
  555. }
  556. }
  557. });
  558. },
  559. activeFlow(index) {
  560. this.isActive = index;
  561. },
  562. actionCheck(e, obj) {
  563. if (obj.child) {
  564. obj.child.forEach(item => {
  565. item.check = true;
  566. });
  567. }
  568. },
  569. submitForm() {}
  570. }
  571. };
  572. </script>
  573. <style scoped="scoped">
  574. .all {
  575. font-size: 14px;
  576. min-height: 600px;
  577. }
  578. .header {
  579. border-bottom: 1px solid #ebebeb;
  580. padding: 20px;
  581. font-size: 16px;
  582. }
  583. .main-top,
  584. .main-bottom {
  585. padding: 20px 0px;
  586. }
  587. ::v-deep :focus {
  588. outline: 0;
  589. }
  590. .flow-item {
  591. background-color: #f4f6f9;
  592. border-radius: 3px;
  593. width: 140px;
  594. min-width: 120px;
  595. height: 60px;
  596. margin-right: 60px;
  597. position: relative;
  598. margin-top: 30px;
  599. box-sizing: border-box;
  600. cursor: pointer;
  601. }
  602. .flow-item:hover {
  603. background-color: #409eff;
  604. color: #fff !important;
  605. }
  606. .flow-item:hover .fontColorZ {
  607. color: #fff !important;
  608. }
  609. .flow-item:hover .fontColorF {
  610. color: #fff !important;
  611. }
  612. .flow-item .el-icon-right {
  613. position: absolute;
  614. right: -60px;
  615. }
  616. .flow-item .fontColorF {
  617. margin-top: 10px;
  618. }
  619. .isActive {
  620. background-color: #409eff;
  621. color: #fff !important;
  622. }
  623. .isActive .fontColorZ,
  624. .isActive .fontColorF {
  625. color: #fff !important;
  626. }
  627. .nweTitle {
  628. margin: 30px 0;
  629. padding-left: 10px;
  630. border-left: 3px solid #409eff;
  631. }
  632. .radio {
  633. position: relative;
  634. top: 2px;
  635. }
  636. .label {
  637. width: 80px;
  638. text-align: left;
  639. }
  640. .inputDc {
  641. position: absolute;
  642. top: 0;
  643. width: 250px;
  644. left: 0;
  645. bottom: 0;
  646. z-index: 9;
  647. }
  648. ::v-deep .el-dialog__body {
  649. padding: 20px;
  650. }
  651. .dialog-title {
  652. font-size: 15px;
  653. margin-bottom: 20px;
  654. }
  655. .dialog-item {
  656. margin-bottom: 10px;
  657. height: 45px;
  658. }
  659. .dialog-item span {
  660. width: 22px;
  661. height: 22px;
  662. border-radius: 50%;
  663. border: 1px solid #409eff;
  664. color: #409eff;
  665. display: inline-block;
  666. line-height: 22px;
  667. font-size: 12px;
  668. text-align: center;
  669. }
  670. .dialog-item .label {
  671. width: 130px;
  672. margin: 0 10px;
  673. }
  674. .ul {
  675. margin: 20px 0;
  676. }
  677. .li {
  678. padding: 15px 0;
  679. border-bottom: 1px solid #f1f1f1;
  680. }
  681. .li:hover {
  682. background-color: #f5f7fa;
  683. }
  684. .border {
  685. -webkit-appearance: none;
  686. background-color: #fff;
  687. background-image: none;
  688. border-radius: 4px;
  689. border: 1px solid #dcdfe6;
  690. -webkit-box-sizing: border-box;
  691. box-sizing: border-box;
  692. color: #606266;
  693. font-size: inherit;
  694. height: auto;
  695. outline: 0;
  696. padding: 0 15px;
  697. width: 250px;
  698. position: relative;
  699. margin-top: 10px;
  700. }
  701. </style>