admin/src/components/business/OperaPlatformApproveTemplWindow.vue
@@ -163,7 +163,7 @@ "> ä¼ä¸ç»ç»æ¶æ </div> <div style="width: 100%; height: 100%; overflow-y: scroll"> <div style="width: 100%; max-height: 560px; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', @@ -338,11 +338,11 @@ erpOrgId: '', hasFace: '', hkStatus: '', includeChild: false, includeChild: true, type: 2 }, page: 1, capacity: 30 capacity: 300 }).then(res => { this.memberList = res.records || [] this.memberList.forEach(item => { @@ -658,10 +658,12 @@ display: flex; justify-content: center; align-items: center; ::v-deep .el-transfer-panel{ flex: 1; height: 100%; } ::v-deep .el-transfer-panel__body { height: 500px; } admin/src/components/common/CommonHeader.vue
@@ -40,6 +40,8 @@ <GlobalAlertWindow title="ä¿®æ¹å¯ç " :visible.sync="visible.changePwd" :showClose="!userInfo.needChangePwd || userInfo.needChangePwd == '1'" :showCancel="userInfo.needChangePwd && userInfo.needChangePwd == '0'" @confirm="confirmChangePwd" @close="visible.changePwd = false" > @@ -62,7 +64,7 @@ v-model="changePwdData.form.newPwd" type="password" placeholder="请è¾å ¥æ°å¯ç " maxlength="30" maxlength="20" show-password ></el-input> </el-form-item> @@ -71,7 +73,7 @@ v-model="changePwdData.form.confirmPwd" type="password" placeholder="è¯·åæ¬¡è¾å ¥æ°å¯ç " maxlength="30" maxlength="20" show-password ></el-input> </el-form-item> @@ -136,7 +138,10 @@ // } }, mounted() { console.log('userInfo',this.userInfo); // console.log('userInfo',this.userInfo); if(!this.userInfo.needChangePwd || this.userInfo.needChangePwd == '0'){ this.visible.changePwd = true } }, filters: { admin/src/components/common/GlobalAlertWindow.vue
@@ -9,6 +9,7 @@ :close-on-click-modal="false" :wrapper-closable="false" :append-to-body="true" :show-close="!showClose" @close="close" > <div slot="title" class="window__header"> @@ -20,7 +21,7 @@ <div v-if="withFooter" class="window__footer"> <slot name="footer"> <el-button @click="confirm" :loading="confirmWorking" type="primary">ç¡®å®</el-button> <el-button @click="close">åæ¶</el-button> <el-button v-if="showCancel" @click="close">åæ¶</el-button> </slot> </div> </el-dialog> @@ -34,6 +35,14 @@ type: String, default: '50%' }, showClose: { type: Boolean, default: false }, showCancel: { type: Boolean, default: true }, // æ¯å¦å å«åºé¨æä½ withFooter: { type: Boolean, admin/src/views/business/approvalConfiguration.vue
@@ -20,14 +20,10 @@ <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </div> <div v-for="(item, index) in apprList" :key="index"> <div class="item yellow" :class="{ <div class="item yellow" :class="{ active: activeIndex == index, blue: item.type == '1', }" @click="flowClick(index)" > }" @click="flowClick(index)"> <div class="head">{{ item.remark }}</div> <div class="content"> <!-- å®¡æ¹ --> @@ -40,25 +36,19 @@ </template> <template v-if="item.memberType == '1'"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else>è¯·éæ©</div> <i class="el-icon-arrow-right"></i> @@ -67,19 +57,14 @@ <!-- æé --> <template v-if="item.type == 1"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> </div> <div v-else>è¯·éæ©</div> <i v-if="item.memberType == '1'" class="el-icon-arrow-right" ></i> <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> </template> </div> </div> @@ -88,11 +73,7 @@ <div class="line"></div> <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </template> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add" ></i> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> </div> </div> </div> @@ -102,118 +83,74 @@ <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> <div class="df_ac mb10"> <div>审æ¹èç¹åç§°</div> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark" ></el-input> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> </div> <!-- æé人 --> <template v-if="apprList[activeIndex].type == '1'"> <div class="config_data_item_reviewed_content"> <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i @click="memDel(memIndex)" class="el-icon-close"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </template> <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType" > <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> <el-radio :label="0">被访人</el-radio> <el-radio :label="1">æå®äººå</el-radio> <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> </el-radio-group> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> <div class="config_data_item_reviewed_label"> <span>æå®å®¡æ ¸äºº</span> <span>ä¸è¶ è¿20人</span> </div> <div class="config_data_item_reviewed_content"> <div v-for="mem,memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i class="el-icon-close" @click="memDel(memIndex)"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </div> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> <div class="config_data_item_reviewed_label"> <span>é¨é¨ä¸»ç®¡</span> </div> <div class="config_data_item_reviewed_r"> <span>被访人ç</span> <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px" > <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> <el-option label="äºçº§ä¸»ç®¡" :value="1" /> <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> <el-option label="å级主管" :value="4" /> </el-select> <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0" >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox > <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> </div> </div> </div> <div class="config_data_item" v-if=" <div class="config_data_item" v-if=" (apprList[activeIndex].memberType == 1 || apprList[activeIndex].memberType == 2) && apprList[activeIndex].type == '0' " > "> <div class="config_data_item_label"> å®¡æ¹æ¹å¼ <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> </div> <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column" > <el-radio :label="0" style="margin-bottom: 20px" >æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio > <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> </el-radio-group> </div> <div class="config_data_submit"> <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary" >ä¿åé 置项</el-button > <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel" >å é¤èç¹</el-button > <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary">ä¿åé 置项</el-button> <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel">å é¤èç¹</el-button> </div> </div> </div> @@ -222,41 +159,27 @@ <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> <div class="staff_modal"> <div class="left"> <div style=" <div style=" width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px; " > "> ä¼ä¸ç»ç»æ¶æ </div> <div style="width: 100%; height: 100%; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ <div style="width: 100%; max-height: 560px; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', children: 'childList', id: 'id', }" @callback="callback" /> }" @callback="callback" /> </div> </div> <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer" > <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> </el-transfer> </div> <span slot="footer" class="dialog-footer"> @@ -410,11 +333,11 @@ erpOrgId: '', hasFace: '', hkStatus: '', includeChild: false, includeChild: true, type: 2 }, page: 1, capacity: 30 capacity: 300 }).then(res => { this.memberList = res.records || [] this.memberList.forEach(item => { @@ -484,6 +407,7 @@ display: flex; align-items: center; justify-content: space-between; .config_list { width: 543px; height: 100%; @@ -493,18 +417,21 @@ box-sizing: border-box; border: 1px solid #eeeeee; background: #f7f7f7; .config_list_head { width: 100%; height: 40px; display: flex; align-items: center; justify-content: space-between; span { font-size: 18px; font-weight: 500; color: #222222; } } .config_content { width: 100%; height: calc(100% - 40px); @@ -514,28 +441,35 @@ display: flex; align-items: center; flex-direction: column; &::-webkit-scrollbar { width: 0; } .active { border: 2px solid #4456ac !important; } .yellow { background: #e89e42 !important; } .blue { background: #5094f3 !important; } .arrows { display: flex; flex-direction: column; align-items: center; position: relative; .line { width: 1px; height: 60px; background-color: #ccc; } .add { font-size: 40px; color: #2080f7; @@ -544,10 +478,12 @@ z-index: 999; top: 10px; } img { width: 12px; } } .item { width: 200px; cursor: pointer; @@ -558,12 +494,14 @@ position: relative; display: flex; flex-direction: column; .head { height: 32px; line-height: 32px; padding: 2px 12px; color: #fff; } .content { flex: 1; background-color: #fff; @@ -572,32 +510,39 @@ padding: 0 12px; justify-content: space-between; } &:last-child { margin: 0 !important; } } } } .config_data { flex: 1; height: 100%; margin-left: 20px; .config_data_submit { margin-top: 50px; } .config_data_item { width: 100%; display: flex; flex-direction: column; margin-bottom: 30px; &:last-child { margin: 0 !important; } .config_data_item_label { font-size: 16px; font-weight: 500; color: #222222; margin-bottom: 20px; span { font-size: 12px; font-weight: 400; @@ -605,14 +550,17 @@ margin-left: 10px; } } .config_data_item_reviewed { width: 100%; margin-top: 20px; .config_data_item_reviewed_r { margin-top: 10px; width: 100%; display: flex; align-items: center; span { flex-shrink: 0; font-size: 14px; @@ -620,15 +568,18 @@ color: #666666; } } .config_data_item_reviewed_label { display: flex; align-items: center; span { &:nth-child(1) { font-size: 14px; font-weight: 400; color: #222222; } &:nth-child(2) { font-size: 12px; font-weight: 400; @@ -641,6 +592,7 @@ } } } .config_data_item_reviewed_content { width: 400px; margin-top: 10px; @@ -652,6 +604,7 @@ display: flex; align-items: flex-start; flex-wrap: wrap; .add { font-size: 12px; font-weight: 400; @@ -659,6 +612,7 @@ cursor: pointer; margin-top: 3px; } .config_data_item_reviewed_content_item { padding: 3px 5px; background: #f4f7fc; @@ -666,11 +620,13 @@ box-sizing: border-box; margin-right: 10px; margin-bottom: 10px; span { font-size: 12px; font-weight: 400; color: #333333; } i { color: #949ba2; margin-left: 10px; @@ -678,22 +634,27 @@ } } } .staff_modal { display: flex; .left { width: 300px; margin-right: 20px; } .transfer { height: 600px; width: 100%; display: flex; justify-content: center; align-items: center; ::v-deep .el-transfer-panel{ flex: 1; height: 100%; } ::v-deep .el-transfer-panel__body { height: 500px; } admin/src/views/business/approvalReport.vue
@@ -9,21 +9,17 @@ <div class="config_content"> <div class="item"> <div class="head">å起人</div> <div class="content">访客</div> <div class="content">被访人</div> </div> <div class="arrows"> <div class="line"></div> <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </div> <div v-for="(item, index) in apprList" :key="index"> <div class="item yellow" :class="{ <div class="item yellow" :class="{ active: activeIndex == index, blue: item.type == '1', }" @click="flowClick(index)" > }" @click="flowClick(index)"> <div class="head">{{ item.remark }}</div> <div class="content"> <!-- å®¡æ¹ --> @@ -36,25 +32,19 @@ </template> <template v-if="item.memberType == '1'"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else>è¯·éæ©</div> <i class="el-icon-arrow-right"></i> @@ -63,19 +53,14 @@ <!-- æé --> <template v-if="item.type == 1"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> </div> <div v-else>è¯·éæ©</div> <i v-if="item.memberType == '1'" class="el-icon-arrow-right" ></i> <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> </template> </div> </div> @@ -84,11 +69,7 @@ <div class="line"></div> <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </template> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add" ></i> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> </div> </div> </div> @@ -98,118 +79,74 @@ <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> <div class="df_ac mb10"> <div>审æ¹èç¹åç§°</div> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark" ></el-input> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> </div> <!-- æé人 --> <template v-if="apprList[activeIndex].type == '1'"> <div class="config_data_item_reviewed_content"> <div v-for="mem,memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i @click="memDel(memIndex)" class="el-icon-close"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </template> <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType" > <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> <el-radio :label="0">被访人</el-radio> <el-radio :label="1">æå®äººå</el-radio> <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> </el-radio-group> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> <div class="config_data_item_reviewed_label"> <span>æå®å®¡æ ¸äºº</span> <span>ä¸è¶ è¿20人</span> </div> <div class="config_data_item_reviewed_content"> <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i class="el-icon-close" @click="memDel(memIndex)"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </div> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> <div class="config_data_item_reviewed_label"> <span>é¨é¨ä¸»ç®¡</span> </div> <div class="config_data_item_reviewed_r"> <span>被访人ç</span> <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px" > <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> <el-option label="äºçº§ä¸»ç®¡" :value="1" /> <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> <el-option label="å级主管" :value="4" /> </el-select> <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0" >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox > <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> </div> </div> </div> <div class="config_data_item" v-if=" <div class="config_data_item" v-if=" (apprList[activeIndex].memberType == 1 || apprList[activeIndex].memberType == 2) && apprList[activeIndex].type == '0' " > "> <div class="config_data_item_label"> å®¡æ¹æ¹å¼ <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> </div> <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column" > <el-radio :label="0" style="margin-bottom: 20px" >æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio > <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> </el-radio-group> </div> <div class="config_data_submit"> <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary" >ä¿åé 置项</el-button > <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel" >å é¤èç¹</el-button > <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary">ä¿åé 置项</el-button> <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel">å é¤èç¹</el-button> </div> </div> </div> @@ -218,41 +155,27 @@ <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> <div class="staff_modal"> <div class="left"> <div style=" <div style=" width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px; " > "> ä¼ä¸ç»ç»æ¶æ </div> <div style="width: 100%; height: 100%; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ <div style="width: 100%; max-height: 560px; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', children: 'childList', id: 'id', }" @callback="callback" /> }" @callback="callback" /> </div> </div> <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer" > <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> </el-transfer> </div> <span slot="footer" class="dialog-footer"> @@ -396,11 +319,11 @@ erpOrgId: '', hasFace: '', hkStatus: '', includeChild: false, includeChild: true, type: 2 }, page: 1, capacity: 30 capacity: 300 }).then(res => { this.memberList = res.records || [] this.memberList.forEach(item => { @@ -470,6 +393,7 @@ display: flex; align-items: center; justify-content: space-between; .config_list { width: 543px; height: 100%; @@ -479,18 +403,21 @@ box-sizing: border-box; border: 1px solid #eeeeee; background: #f7f7f7; .config_list_head { width: 100%; height: 40px; display: flex; align-items: center; justify-content: space-between; span { font-size: 18px; font-weight: 500; color: #222222; } } .config_content { width: 100%; height: calc(100% - 40px); @@ -500,28 +427,35 @@ display: flex; align-items: center; flex-direction: column; &::-webkit-scrollbar { width: 0; } .active { border: 2px solid #4456ac !important; } .yellow { background: #e89e42 !important; } .blue { background: #5094f3 !important; } .arrows { display: flex; flex-direction: column; align-items: center; position: relative; .line { width: 1px; height: 60px; background-color: #ccc; } .add { font-size: 40px; color: #2080f7; @@ -530,10 +464,12 @@ z-index: 999; top: 10px; } img { width: 12px; } } .item { width: 200px; cursor: pointer; @@ -544,12 +480,14 @@ position: relative; display: flex; flex-direction: column; .head { height: 32px; line-height: 32px; padding: 2px 12px; color: #fff; } .content { flex: 1; background-color: #fff; @@ -558,32 +496,39 @@ padding: 0 12px; justify-content: space-between; } &:last-child { margin: 0 !important; } } } } .config_data { flex: 1; height: 100%; margin-left: 20px; .config_data_submit { margin-top: 50px; } .config_data_item { width: 100%; display: flex; flex-direction: column; margin-bottom: 30px; &:last-child { margin: 0 !important; } .config_data_item_label { font-size: 16px; font-weight: 500; color: #222222; margin-bottom: 20px; span { font-size: 12px; font-weight: 400; @@ -591,14 +536,17 @@ margin-left: 10px; } } .config_data_item_reviewed { width: 100%; margin-top: 20px; .config_data_item_reviewed_r { margin-top: 10px; width: 100%; display: flex; align-items: center; span { flex-shrink: 0; font-size: 14px; @@ -606,15 +554,18 @@ color: #666666; } } .config_data_item_reviewed_label { display: flex; align-items: center; span { &:nth-child(1) { font-size: 14px; font-weight: 400; color: #222222; } &:nth-child(2) { font-size: 12px; font-weight: 400; @@ -627,6 +578,7 @@ } } } .config_data_item_reviewed_content { width: 400px; margin-top: 10px; @@ -638,6 +590,7 @@ display: flex; align-items: flex-start; flex-wrap: wrap; .add { font-size: 12px; font-weight: 400; @@ -645,6 +598,7 @@ cursor: pointer; margin-top: 3px; } .config_data_item_reviewed_content_item { padding: 3px 5px; background: #f4f7fc; @@ -652,11 +606,13 @@ box-sizing: border-box; margin-right: 10px; margin-bottom: 10px; span { font-size: 12px; font-weight: 400; color: #333333; } i { color: #949ba2; margin-left: 10px; @@ -664,22 +620,27 @@ } } } .staff_modal { display: flex; .left { width: 300px; margin-right: 20px; } .transfer { height: 600px; width: 100%; display: flex; justify-content: center; align-items: center; ::v-deep .el-transfer-panel{ flex: 1; height: 100%; } ::v-deep .el-transfer-panel__body { height: 500px; } admin/src/views/login.vue
@@ -82,7 +82,7 @@ isRemPsd: false, username: '', password: '', activeTab: '1', activeTab: '0', // éªè¯ç captcha: { loading: false, admin/src/views/operation/serviceCar/apprConfig.vue
@@ -20,14 +20,10 @@ <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </div> <div v-for="(item, index) in apprList" :key="index"> <div class="item yellow" :class="{ <div class="item yellow" :class="{ active: activeIndex == index, blue: item.type == '1', }" @click="flowClick(index)" > }" @click="flowClick(index)"> <div class="head">{{ item.remark }}</div> <div class="content"> <!-- å®¡æ¹ --> @@ -37,25 +33,19 @@ </template> <template v-if="item.memberType == '1'"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> <span v-if="item.approveType == 0 && item.type == '0'"> æç¾</span > æç¾</span> <span v-if="item.approveType == 1 && item.type == '0'"> ä¼ç¾</span > ä¼ç¾</span> </div> <div v-else>è¯·éæ©</div> <i class="el-icon-arrow-right"></i> @@ -64,19 +54,14 @@ <!-- æé --> <template v-if="item.type == 1"> <div v-if="item.objIds && item.objIds.length === 1"> <span >{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span > <span>{{ item.objIds[0].name }} {{ item.objIds[0].companyName }}</span> </div> <div v-else-if="item.objIds && item.objIds.length > 1"> <span>{{ item.objIds[0].name }} ç</span> </div> <div v-else>è¯·éæ©</div> <i v-if="item.memberType == '1'" class="el-icon-arrow-right" ></i> <i v-if="item.memberType == '1'" class="el-icon-arrow-right"></i> </template> </div> </div> @@ -85,11 +70,7 @@ <div class="line"></div> <img src="@/assets/images/peizhi_ar@2x.png" alt="" /> </template> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add" ></i> <i v-if="apprList.length - 2 === index" @click="handleAddAppr()" class="el-icon-circle-plus add"></i> </div> </div> </div> @@ -99,127 +80,79 @@ <div class="config_data_item_label">éæ©è¯¥èç¹ç审æ¹äºº</div> <div class="df_ac mb10"> <div>审æ¹èç¹åç§°</div> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark" ></el-input> <el-input class="w200 ml10" v-model="apprList[activeIndex].remark"></el-input> </div> <!-- æé人 --> <template v-if="apprList[activeIndex].type == '1'"> <div class="config_data_item_reviewed_content"> <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="mem, memIndex in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i @click="memDel(memIndex)" class="el-icon-close"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </template> <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType" > <el-radio-group v-if="apprList[activeIndex].type == '0'" v-model="apprList[activeIndex].memberType"> <!-- <el-radio :label="0">被访人</el-radio> --> <el-radio :label="1">æå®äººå</el-radio> <el-radio :label="2">é¨é¨ä¸»ç®¡</el-radio> </el-radio-group> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 1"> <div class="config_data_item_reviewed_label"> <span>æå®å®¡æ ¸äºº</span> <span>ä¸è¶ è¿20人</span> </div> <div class="config_data_item_reviewed_content"> <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item" > <div v-for="(mem, memIndex) in apprList[activeIndex].objIds" :key="mem.id" class="config_data_item_reviewed_content_item"> <span>{{ mem.name }}</span> <i class="el-icon-close" @click="memDel(memIndex)"></i> </div> <span class="add" @click="selStaff">+æ·»å </span> </div> </div> <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2" > <div class="config_data_item_reviewed" v-if="apprList[activeIndex].memberType == 2"> <div class="config_data_item_reviewed_label"> <span>é¨é¨ä¸»ç®¡</span> </div> <div class="config_data_item_reviewed_r"> <span>ç³è¯·äººç</span> <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px" > <el-select v-model="apprList[activeIndex].objLevel" placeholder="è¯·éæ©" style="margin: 0 20px 0 10px"> <el-option label="ç´æ¥ä¸»ç®¡" :value="0" /> <el-option label="äºçº§ä¸»ç®¡" :value="1" /> <el-option label="ä¸çº§ä¸»ç®¡" :value="2" /> <el-option label="å级主管" :value="4" /> </el-select> <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0" >æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox > <el-checkbox v-model="apprList[activeIndex].noleaderOpt" :true-label="1" :false-label="0">æ¾ä¸å°ä¸»ç®¡æ¶ï¼ç±ä¸çº§ä¸»ç®¡ä»£å®¡æ ¸</el-checkbox> </div> </div> </div> <div class="config_data_item" v-if=" <div class="config_data_item" v-if=" (apprList[activeIndex].memberType == 1 || apprList[activeIndex].memberType == 2) && apprList[activeIndex].type == '0' " > "> <div class="config_data_item_label"> å®¡æ¹æ¹å¼ <span>审æ¹äººä¸ºå¤ä¸ªæ¶ï¼éç¨çå®¡æ¹æ¹å¼</span> </div> <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column" > <el-radio :label="0" style="margin-bottom: 20px" >æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio > <el-radio-group v-model="apprList[activeIndex].approveType" style="display: flex; flex-direction: column"> <el-radio :label="0" style="margin-bottom: 20px">æç¾ï¼å ¶ä¸ä¸å审æ¹äººåæææç»å³å¯ï¼</el-radio> <el-radio :label="1">ä¼ç¾ï¼ææå®¡æ¹äººé½åææå¯éè¿ï¼</el-radio> </el-radio-group> </div> <div v-if="apprList[activeIndex].type == '0'" class="df_ac mb10"> <div>å 许修æ¹"驾驶å"</div> <el-switch class="ml10" :active-value="1" :inactive-value="0" v-model="apprList[activeIndex].driverParam" ></el-switch> <el-switch class="ml10" :active-value="1" :inactive-value="0" v-model="apprList[activeIndex].driverParam"></el-switch> </div> <div class="config_data_submit"> <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary" >ä¿åé 置项</el-button > <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel" >å é¤èç¹</el-button > <el-button @click="onSubmit" :loading="subLoading" style="background: #435ebe" type="primary">ä¿åé 置项</el-button> <el-button v-if="activeIndex !== 0 && activeIndex !== apprList.length - 1" type="danger" plain @click="handleDel">å é¤èç¹</el-button> </div> </div> </div> @@ -228,41 +161,27 @@ <el-dialog title="éæ©åå·¥" :visible.sync="isShowTransfer" width="1000px"> <div class="staff_modal"> <div class="left"> <div style=" <div style=" width: 100%; height: 50px; background: rgba(242, 242, 242, 1); line-height: 50px; text-align: center; font-size: 14px; " > "> ä¼ä¸ç»ç»æ¶æ </div> <div style="width: 100%; height: 100%; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ <div style="width: 100%; max-height: 560px; overflow-y: scroll"> <Tree :list="companyTree" :defaultProps="{ name: 'name', status: 'fsStatus', children: 'childList', id: 'id', }" @callback="callback" /> }" @callback="callback" /> </div> </div> <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer" > <el-transfer filterable :title="['æªé', 'å·²é']" openAll :props="{ label: 'name', key: 'keyTemp' }" filter-placeholder="æç´¢åå·¥" v-model="searchForm.objIds" :data="memberList" class="transfer"> </el-transfer> </div> <span slot="footer" class="dialog-footer"> @@ -415,11 +334,11 @@ erpOrgId: '', hasFace: '', hkStatus: '', includeChild: false, includeChild: true, type: 2 }, page: 1, capacity: 30 capacity: 300 }).then(res => { this.memberList = res.records || [] this.memberList.forEach(item => { @@ -489,6 +408,7 @@ display: flex; align-items: center; justify-content: space-between; .config_list { width: 543px; height: 100%; @@ -498,18 +418,21 @@ box-sizing: border-box; border: 1px solid #eeeeee; background: #f7f7f7; .config_list_head { width: 100%; height: 40px; display: flex; align-items: center; justify-content: space-between; span { font-size: 18px; font-weight: 500; color: #222222; } } .config_content { width: 100%; height: calc(100% - 40px); @@ -519,28 +442,35 @@ display: flex; align-items: center; flex-direction: column; &::-webkit-scrollbar { width: 0; } .active { border: 2px solid #4456ac !important; } .yellow { background: #e89e42 !important; } .blue { background: #5094f3 !important; } .arrows { display: flex; flex-direction: column; align-items: center; position: relative; .line { width: 1px; height: 60px; background-color: #ccc; } .add { font-size: 40px; color: #2080f7; @@ -549,10 +479,12 @@ z-index: 999; top: 10px; } img { width: 12px; } } .item { width: 200px; cursor: pointer; @@ -563,12 +495,14 @@ position: relative; display: flex; flex-direction: column; .head { height: 32px; line-height: 32px; padding: 2px 12px; color: #fff; } .content { flex: 1; background-color: #fff; @@ -577,32 +511,39 @@ padding: 0 12px; justify-content: space-between; } &:last-child { margin: 0 !important; } } } } .config_data { flex: 1; height: 100%; margin-left: 20px; .config_data_submit { margin-top: 50px; } .config_data_item { width: 100%; display: flex; flex-direction: column; margin-bottom: 30px; &:last-child { margin: 0 !important; } .config_data_item_label { font-size: 16px; font-weight: 500; color: #222222; margin-bottom: 20px; span { font-size: 12px; font-weight: 400; @@ -610,14 +551,17 @@ margin-left: 10px; } } .config_data_item_reviewed { width: 100%; margin-top: 20px; .config_data_item_reviewed_r { margin-top: 10px; width: 100%; display: flex; align-items: center; span { flex-shrink: 0; font-size: 14px; @@ -625,15 +569,18 @@ color: #666666; } } .config_data_item_reviewed_label { display: flex; align-items: center; span { &:nth-child(1) { font-size: 14px; font-weight: 400; color: #222222; } &:nth-child(2) { font-size: 12px; font-weight: 400; @@ -646,6 +593,7 @@ } } } .config_data_item_reviewed_content { width: 400px; margin-top: 10px; @@ -657,6 +605,7 @@ display: flex; align-items: flex-start; flex-wrap: wrap; .add { font-size: 12px; font-weight: 400; @@ -664,6 +613,7 @@ cursor: pointer; margin-top: 3px; } .config_data_item_reviewed_content_item { padding: 3px 5px; background: #f4f7fc; @@ -671,11 +621,13 @@ box-sizing: border-box; margin-right: 10px; margin-bottom: 10px; span { font-size: 12px; font-weight: 400; color: #333333; } i { color: #949ba2; margin-left: 10px; @@ -683,22 +635,27 @@ } } } .staff_modal { display: flex; .left { width: 300px; margin-right: 20px; } .transfer { height: 600px; width: 100%; display: flex; justify-content: center; align-items: center; ::v-deep .el-transfer-panel{ flex: 1; height: 100%; } ::v-deep .el-transfer-panel__body { height: 500px; } pda/api/index.js
@@ -158,3 +158,11 @@ data }) } // é¢çº¦ 详æ export const driverApplyDetail = (data) => { return http({ url: 'visitsAdmin/cloudService/web/driverPlatform/getDetail', method: 'get', data }) } pda/manifest.json
@@ -1,5 +1,5 @@ { "name": "pda", "name" : "æå°è°åº¦", "appid": "__UNI__8789FB4", "description": "", "versionName": "1.0.0", @@ -19,6 +19,7 @@ "/gateway_interface": { // è¿ä¸ªå段åéä¸ä½ é ç½®çbasePrefixUrlä¸è´ï¼ç³»ç»è¯å«å°å¸¦æ/dev-api请æ±çå°åæ¶ï¼ä¼å¨å颿¼æ¥ä¸ä»£çæå¡å¨å°å "target" : "http://10.50.250.253:8088/gateway_interface", // 代çæå¡å¨ååæIPå°å // "target": "http://192.168.0.100:10010", // 代çæå¡å¨ååæIPå°å "changeOrigin": true, // å 许跨å "pathRewrite": { @@ -65,9 +66,13 @@ ] }, /* iosæå é ç½® */ "ios": {}, "ios" : { "dSYMs" : false }, /* SDKé ç½® */ "sdkConfigs": {} "sdkConfigs" : { "ad" : {} } } }, /* å¿«åºç¨ç¹æç¸å ³ */ pda/pages.json
@@ -44,6 +44,13 @@ "navigationBarTitleText": "é ç½®æ¾ç¤ºæå°", "enablePullDownRefresh": false } }, { "path": "pages/index/SubDetail", "style": { "navigationBarTitleText": "é¢çº¦è¯¦æ ", "enablePullDownRefresh": false } } ], "globalStyle": { pda/pages/index/SubDetail.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,466 @@ <template> <view class="main_app"> <view class="status_wrap"> <view class="name">{{info.driverName}}çå ¥åé¢çº¦</view> <view class="gray">{{info.carCodeFront}}</view> <!-- <view class="desc" :class="{ gray: info.businessStatus == '2' || info.businessStatus == '3' || info.businessStatus == '4', }">{{ infoStatus }}</view> --> <view class="status" v-if="info.status != 2 && info.status != 3">{{ statusMap[info.status] }}</view> <image v-if="info.status == 2" class="icon" src="@/static/ic_passed@2x.png" mode=""></image> <image v-if="info.status == 3" class="icon" src="@/static/ic_refused@2x.png" mode=""></image> </view> <!-- --> <view class="emyty"></view> <view class="module_list"> <view class="item"> <view class="label">å ¥ååå </view> <view class="value">{{info.inReason}}</view> </view> <view class="item"> <view class="label">ååç¼å·</view> <view class="value">{{info.contractNum}}</view> </view> <view class="item"> <view class="label">å°åºæ¶é´</view> <view v-if="info.arriveDate" class="value">{{info.arriveDate.slice(0,16)}}</view> </view> <view class="item"> <view class="label">åè¿è¯ç §ç</view> <view class="value"> <image v-if="info.transportImg" class="avatar_wrap" :src="info.prefixUrl + info.transportImg" ></image> </view> </view> <view class="item"> <view class="label">å ¥åºç±»å</view> <view class="value">{{info.inType == 0 ? 'æ´æç' : 'ä»¶ç'}}</view> </view> <view class="item"> <view class="label">æ»è¿æ°é</view> <view class="value">{{info.totalNum}}䏿¯</view> </view> <view class="emyty"></view> <view class="item"> <view class="label">叿ºå§å</view> <view class="value">{{info.driverName}} </view> </view> <view class="item"> <view class="label">ææºå·</view> <view class="value">{{info.driverPhone}}</view> </view> <view class="item"> <view class="label">车çç §</view> <view class="value">å {{info.carCodeFront}}ï¼å {{info.carCodeBack}}</view> </view> </view> <!-- æµç¨ --> <view class="flow_wrap"> <view class="flow_title">æµç¨</view> <view class="list" v-if=" info.approveDateVO != null && info.approveDateVO.approveList != null "> <view class="item" v-for="(item, index) in info.approveDateVO.approveList" :key="item.id"> <view class="separate"></view> <view class="avatar"> <image v-if="item.type == 1" class="img" src="@/static/staff/ic_chaosong@2x.png" /> <image v-else-if="item.approveType == 1 || item.approveType == 0" class="img" src="@/static/staff/ic_shenpiren@2x.png" /> <image v-else-if="item.faceImg" :src="item.faceImg" class="img"></image> <span v-else class="img_name">{{item.memberName && item.memberName.slice(0,1)}}</span> <image v-if="item.status == 2" class="status" src="@/static/staff/liucheng_success@2x.png" mode="widthFix" /> <image v-if="item.status == 3" class="status" src="@/static/staff/liucheng_fail@2x.png" mode="widthFix" /> </view> <view class="content"> <view class="head"> <view class="event">{{ item.title }}</view> <view class="time">{{ item.checkDate }}</view> </view> <view class="name_wrap"> <text>{{ item.memberName }}<text :class="{ status: item.statusInfo == 'å¤çä¸' || item.status == '1' }" v-if="item.statusInfo">({{ item.statusInfo }})</text></text> </view> <view v-if="item.checkInfo" class="remark">{{ item.checkInfo }}</view> <!-- æé人 --> <view v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="children"> <view class="child" v-for="child in item.approveList" :key="child.id"> <image v-if="child.faceImg" class="child_img" :src="child.faceImg" /> <view v-else class="child_name">{{ child.memberName && child.memberName.slice(0,1) }}</view> <view>{{ child.memberName }}</view> </view> </view> </view> </view> </view> </view> <view class="emyty"></view> </view> </template> <script> import { driverApplyDetail } from '@/api' export default { data() { return { showApprModal: false, checkInfo: '', infoStatus: '', flag: '1', info: {}, type: 0, statusMap: { 0: 'å¾ å®¡æ¹', 1: '审æ¹ä¸', 2: 'å·²éè¿', 3: 'å·²æç»', 4: '已忶', }, } }, onLoad(option) { // this.type = option.objType // this.infoStatus = option.info this.getDetail(option.id) }, methods: { getDetail(id) { driverApplyDetail({id}).then(res => { this.info = res.data if(this.info.approveDateVO && this.info.approveDateVO.approveList.length > 0 ){ this.info.approveDateVO.approveList.forEach(item => { if(item.approveList && item.approveList.length == 1 && item.type !== 1){ item.title = item.approveList[0].title item.faceImg = item.approveList[0].faceImg item.memberName = item.approveList[0].memberName item.statusInfo = item.approveList[0].statusInfo item.approveList = [] } }) } console.log('this.info.approveDateVO', this.info.approveDateVO.approveList); }) }, }, } </script> <style> page { background-color: #f7f7f7; } </style> <style lang="scss"> .main_app { background-color: #fff; padding-bottom: 0; .flow_wrap { padding: 30rpx 0; .flow_title { font-weight: 600; font-size: 32rpx; color: #222222; margin-bottom: 24rpx; } .list { .item { display: flex; margin-bottom: 48rpx; position: relative; .separate { position: absolute; width: 4rpx; height: 100%; background-color: #eeeeee; left: 40rpx; transform: translate(-50%, 0); top: 80rpx; } .avatar { width: 80rpx; height: 80rpx; position: relative; margin-right: 20rpx; display: flex; align-items: center; justify-content: center; .img { width: 80rpx; height: 80rpx; border-radius: 50%; } .img_name { font-size: 32rpx; color: #FFFFFF; } .status { width: 28rpx; height: 28rpx; border-radius: 50%; position: absolute; right: 0; bottom: 0; } } .content { flex: 1; .head { display: flex; justify-content: space-between; margin-bottom: 4rpx; .event { font-size: 30rpx; } .time { font-size: 26rpx; color: #999999; } } .name_wrap { font-size: 26rpx; color: #777777; .status { color: $uni-color-primary; } } .children { display: flex; flex-wrap: wrap; margin-top: 12rpx; .child { display: flex; flex-direction: column; justify-content: center; align-items: center; margin-right: 12rpx; font-size: 26rpx; color: #777777; .child_img { width: 48rpx; height: 48rpx; border-radius: 50%; margin-bottom: 2rpx; } .child_name { margin-bottom: 2rpx; width: 48rpx; height: 48rpx; text-align: center; justify-content: center; padding-top: 4rpx; font-size: 28rpx; border-radius: 50%; color: #FFFFFF; background-color: $uni-color-primary; } } } .remark { margin-top: 12rpx; background-color: #f7f7f7; padding: 14rpx 20rpx; border-radius: 8rpx; font-size: 26rpx; color: #666666; line-height: 36rpx; } } .carbon { display: flex; width: 590rpx; overflow-x: auto; margin-top: 12rpx; .carbon_item { text-align: center; flex-shrink: 0; width: 100rpx; image { width: 60rpx; height: 60rpx; margin: 0 auto; } view { font-size: 26rpx; color: #777777; } } } &:nth-last-child(1) { .separate { height: 0; } } } } } .module_list { .item { padding: 30rpx 0; border-bottom: 1rpx solid #e5e5e5; .label { font-size: 26rpx; color: #666666; margin-bottom: 20rpx; } .value { font-size: 30rpx; display: flex; align-items: center; .avatar_wrap { margin-right: 20rpx; width: 120rpx; height: 120rpx; border-radius: 8rpx; border: 2rpx solid #e5e5e5; } .info { flex: 1; display: flex; flex-direction: column; justify-content: space-between; font-size: 26rpx; color: #666666; .name { font-size: 30rpx; color: #333333; } } } } } .status_wrap { position: relative; padding: 30rpx 0; .name { font-weight: 600; font-size: 32rpx; margin-bottom: 20rpx; color: #222222; } .desc { font-size: 26rpx; color: #ed4545; margin-bottom: 12rpx; } .gray { color: #999999; margin-bottom: 12rpx; } .status { position: absolute; right: -30rpx; top: 0; height: 60rpx; line-height: 60rpx; padding: 0 32rpx; border-radius: 0rpx 0rpx 0rpx 30rpx; background-color: #e9edff; color: $uni-color-primary; } .icon{ width: 120rpx; height: 120rpx; border-radius: 50%; position: absolute; right: 0rpx; top: 20rpx; } } .main_footer { padding-bottom: 64rpx; display: flex; justify-content: space-between; .btn { width: 336rpx; height: 88rpx; line-height: 88rpx; background: #ffffff; border-radius: 44rpx; border: 1rpx solid #999999; font-size: 32rpx; text-align: center; margin: 16rpx 0; } .agree { background: $uni-color-primary; color: #fff; border: 1rpx solid $uni-color-primary; } } .appr_modal { padding: 36rpx 30rpx 0; .title { font-weight: 600; font-size: 32rpx; color: #222222; margin-bottom: 40rpx; text-align: center; } textarea { box-sizing: border-box; width: 690rpx; background-color: #f7f7f7; font-size: 28rpx; color: #333333; padding: 24rpx; border-radius: 8rpx; margin-bottom: 30rpx; } } .emyty { width: 750rpx; height: 20rpx; background-color: #f7f7f7; margin: 0 -30rpx; } } </style> pda/pages/index/center.vue
@@ -40,6 +40,7 @@ <view class="line" v-else> <text class="label">åååå·</text> <text class="value">{{ item.contractNum }}</text> <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ </text> </view> <view class="line"> <text class="label">驾驶å</text> @@ -104,6 +105,7 @@ <view class="line" v-else> <text class="label">åååå·</text> <text class="value">{{ item.contractNum }}</text> <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ </text> </view> <view class="line"> <text class="label">驾驶å</text> @@ -326,6 +328,11 @@ this.showDetail = true }) }, subDetail(item) { uni.navigateTo({ url: `/pages/index/SubDetail?id=${item.bookId}` }) }, handleFinish(item) { finishWork({ jobId: item.id pda/pages/index/queueup.vue
@@ -46,6 +46,7 @@ <view class="line" v-else> <text class="label">åååå·</text> <text class="value">{{ item.contractNum }}</text> <text class="primaryColor" @click="subDetail(item)">é¢çº¦è¯¦æ </text> </view> <view class="line"> <text class="label">驾驶å</text> @@ -163,6 +164,11 @@ this.showDetail = true }) }, subDetail(item) { uni.navigateTo({ url: `/pages/index/SubDetail?id=${item.bookId}` }) }, getPlatformGroup() { getPlatformGroupList({ queryData: 1, pda/static/ic_passed@2x.png
pda/static/ic_refused@2x.png
pda/static/staff/ic_chaosong@2x.png
pda/static/staff/ic_shenpiren@2x.png
pda/static/staff/liucheng_fail@2x.png
pda/static/staff/liucheng_success@2x.png